{
  "id": "e76281af753b610737bc2069931c12b7",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.6.6",
  "solcLongVersion": "0.6.6+commit.6c089d02",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/pegasys-periphery/PegasysRouter.sol": {
        "content": "pragma solidity =0.6.6;\n\nimport \"../pegasys-core/interfaces/IPegasysFactory.sol\";\nimport \"../pegasys-lib/libraries/TransferHelper.sol\";\n\nimport \"./interfaces/IPegasysRouter.sol\";\nimport \"./libraries/PegasysLibrary.sol\";\nimport \"./libraries/SafeMath.sol\";\nimport \"./interfaces/IERC20.sol\";\nimport \"./interfaces/IWSYS.sol\";\n\ncontract PegasysRouter is IPegasysRouter {\n    using SafeMath for uint256;\n\n    address public immutable override factory;\n    address public immutable override WSYS;\n\n    modifier ensure(uint256 deadline) {\n        require(deadline >= block.timestamp, \"PegasysRouter: EXPIRED\");\n        _;\n    }\n\n    constructor(address _factory, address _WSYS) public {\n        factory = _factory;\n        WSYS = _WSYS;\n    }\n\n    receive() external payable {\n        assert(msg.sender == WSYS); // only accept SYS via fallback from the WSYS contract\n    }\n\n    // **** ADD LIQUIDITY ****\n    function _addLiquidity(\n        address tokenA,\n        address tokenB,\n        uint256 amountADesired,\n        uint256 amountBDesired,\n        uint256 amountAMin,\n        uint256 amountBMin\n    ) internal virtual returns (uint256 amountA, uint256 amountB) {\n        // create the pair if it doesn't exist yet\n        if (IPegasysFactory(factory).getPair(tokenA, tokenB) == address(0)) {\n            IPegasysFactory(factory).createPair(tokenA, tokenB);\n        }\n        (uint256 reserveA, uint256 reserveB) = PegasysLibrary.getReserves(\n            factory,\n            tokenA,\n            tokenB\n        );\n        if (reserveA == 0 && reserveB == 0) {\n            (amountA, amountB) = (amountADesired, amountBDesired);\n        } else {\n            uint256 amountBOptimal = PegasysLibrary.quote(\n                amountADesired,\n                reserveA,\n                reserveB\n            );\n            if (amountBOptimal <= amountBDesired) {\n                require(\n                    amountBOptimal >= amountBMin,\n                    \"PegasysRouter: INSUFFICIENT_B_AMOUNT\"\n                );\n                (amountA, amountB) = (amountADesired, amountBOptimal);\n            } else {\n                uint256 amountAOptimal = PegasysLibrary.quote(\n                    amountBDesired,\n                    reserveB,\n                    reserveA\n                );\n                assert(amountAOptimal <= amountADesired);\n                require(\n                    amountAOptimal >= amountAMin,\n                    \"PegasysRouter: INSUFFICIENT_A_AMOUNT\"\n                );\n                (amountA, amountB) = (amountAOptimal, amountBDesired);\n            }\n        }\n    }\n\n    function addLiquidity(\n        address tokenA,\n        address tokenB,\n        uint256 amountADesired,\n        uint256 amountBDesired,\n        uint256 amountAMin,\n        uint256 amountBMin,\n        address to,\n        uint256 deadline\n    )\n        external\n        virtual\n        override\n        ensure(deadline)\n        returns (\n            uint256 amountA,\n            uint256 amountB,\n            uint256 liquidity\n        )\n    {\n        (amountA, amountB) = _addLiquidity(\n            tokenA,\n            tokenB,\n            amountADesired,\n            amountBDesired,\n            amountAMin,\n            amountBMin\n        );\n        address pair = PegasysLibrary.pairFor(factory, tokenA, tokenB);\n        TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);\n        TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);\n        liquidity = IPegasysPair(pair).mint(to);\n    }\n\n    function addLiquiditySYS(\n        address token,\n        uint256 amountTokenDesired,\n        uint256 amountTokenMin,\n        uint256 amountSYSMin,\n        address to,\n        uint256 deadline\n    )\n        external\n        payable\n        virtual\n        override\n        ensure(deadline)\n        returns (\n            uint256 amountToken,\n            uint256 amountSYS,\n            uint256 liquidity\n        )\n    {\n        (amountToken, amountSYS) = _addLiquidity(\n            token,\n            WSYS,\n            amountTokenDesired,\n            msg.value,\n            amountTokenMin,\n            amountSYSMin\n        );\n        address pair = PegasysLibrary.pairFor(factory, token, WSYS);\n        TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);\n        IWSYS(WSYS).deposit{value: amountSYS}();\n        assert(IWSYS(WSYS).transfer(pair, amountSYS));\n        liquidity = IPegasysPair(pair).mint(to);\n        // refund dust SYS, if any\n        if (msg.value > amountSYS)\n            TransferHelper.safeTransferSYS(msg.sender, msg.value - amountSYS);\n    }\n\n    // **** REMOVE LIQUIDITY ****\n    function removeLiquidity(\n        address tokenA,\n        address tokenB,\n        uint256 liquidity,\n        uint256 amountAMin,\n        uint256 amountBMin,\n        address to,\n        uint256 deadline\n    )\n        public\n        virtual\n        override\n        ensure(deadline)\n        returns (uint256 amountA, uint256 amountB)\n    {\n        address pair = PegasysLibrary.pairFor(factory, tokenA, tokenB);\n        IPegasysPair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair\n        (uint256 amount0, uint256 amount1) = IPegasysPair(pair).burn(to);\n        (address token0, ) = PegasysLibrary.sortTokens(tokenA, tokenB);\n        (amountA, amountB) = tokenA == token0\n            ? (amount0, amount1)\n            : (amount1, amount0);\n        require(amountA >= amountAMin, \"PegasysRouter: INSUFFICIENT_A_AMOUNT\");\n        require(amountB >= amountBMin, \"PegasysRouter: INSUFFICIENT_B_AMOUNT\");\n    }\n\n    function removeLiquiditySYS(\n        address token,\n        uint256 liquidity,\n        uint256 amountTokenMin,\n        uint256 amountSYSMin,\n        address to,\n        uint256 deadline\n    )\n        public\n        virtual\n        override\n        ensure(deadline)\n        returns (uint256 amountToken, uint256 amountSYS)\n    {\n        (amountToken, amountSYS) = removeLiquidity(\n            token,\n            WSYS,\n            liquidity,\n            amountTokenMin,\n            amountSYSMin,\n            address(this),\n            deadline\n        );\n        TransferHelper.safeTransfer(token, to, amountToken);\n        IWSYS(WSYS).withdraw(amountSYS);\n        TransferHelper.safeTransferSYS(to, amountSYS);\n    }\n\n    function removeLiquidityWithPermit(\n        address tokenA,\n        address tokenB,\n        uint256 liquidity,\n        uint256 amountAMin,\n        uint256 amountBMin,\n        address to,\n        uint256 deadline,\n        bool approveMax,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external virtual override returns (uint256 amountA, uint256 amountB) {\n        address pair = PegasysLibrary.pairFor(factory, tokenA, tokenB);\n        uint256 value = approveMax ? uint256(-1) : liquidity;\n        IPegasysPair(pair).permit(\n            msg.sender,\n            address(this),\n            value,\n            deadline,\n            v,\n            r,\n            s\n        );\n        (amountA, amountB) = removeLiquidity(\n            tokenA,\n            tokenB,\n            liquidity,\n            amountAMin,\n            amountBMin,\n            to,\n            deadline\n        );\n    }\n\n    function removeLiquiditySYSWithPermit(\n        address token,\n        uint256 liquidity,\n        uint256 amountTokenMin,\n        uint256 amountSYSMin,\n        address to,\n        uint256 deadline,\n        bool approveMax,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    )\n        external\n        virtual\n        override\n        returns (uint256 amountToken, uint256 amountSYS)\n    {\n        address pair = PegasysLibrary.pairFor(factory, token, WSYS);\n        uint256 value = approveMax ? uint256(-1) : liquidity;\n        IPegasysPair(pair).permit(\n            msg.sender,\n            address(this),\n            value,\n            deadline,\n            v,\n            r,\n            s\n        );\n        (amountToken, amountSYS) = removeLiquiditySYS(\n            token,\n            liquidity,\n            amountTokenMin,\n            amountSYSMin,\n            to,\n            deadline\n        );\n    }\n\n    // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****\n    function removeLiquiditySYSSupportingFeeOnTransferTokens(\n        address token,\n        uint256 liquidity,\n        uint256 amountTokenMin,\n        uint256 amountSYSMin,\n        address to,\n        uint256 deadline\n    ) public virtual override ensure(deadline) returns (uint256 amountSYS) {\n        (, amountSYS) = removeLiquidity(\n            token,\n            WSYS,\n            liquidity,\n            amountTokenMin,\n            amountSYSMin,\n            address(this),\n            deadline\n        );\n        TransferHelper.safeTransfer(\n            token,\n            to,\n            IERC20(token).balanceOf(address(this))\n        );\n        IWSYS(WSYS).withdraw(amountSYS);\n        TransferHelper.safeTransferSYS(to, amountSYS);\n    }\n\n    function removeLiquiditySYSWithPermitSupportingFeeOnTransferTokens(\n        address token,\n        uint256 liquidity,\n        uint256 amountTokenMin,\n        uint256 amountSYSMin,\n        address to,\n        uint256 deadline,\n        bool approveMax,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external virtual override returns (uint256 amountSYS) {\n        address pair = PegasysLibrary.pairFor(factory, token, WSYS);\n        uint256 value = approveMax ? uint256(-1) : liquidity;\n        IPegasysPair(pair).permit(\n            msg.sender,\n            address(this),\n            value,\n            deadline,\n            v,\n            r,\n            s\n        );\n        amountSYS = removeLiquiditySYSSupportingFeeOnTransferTokens(\n            token,\n            liquidity,\n            amountTokenMin,\n            amountSYSMin,\n            to,\n            deadline\n        );\n    }\n\n    // **** SWAP ****\n    // requires the initial amount to have already been sent to the first pair\n    function _swap(\n        uint256[] memory amounts,\n        address[] memory path,\n        address _to\n    ) internal virtual {\n        for (uint256 i; i < path.length - 1; i++) {\n            (address input, address output) = (path[i], path[i + 1]);\n            (address token0, ) = PegasysLibrary.sortTokens(input, output);\n            uint256 amountOut = amounts[i + 1];\n            (uint256 amount0Out, uint256 amount1Out) = input == token0\n                ? (uint256(0), amountOut)\n                : (amountOut, uint256(0));\n            address to = i < path.length - 2\n                ? PegasysLibrary.pairFor(factory, output, path[i + 2])\n                : _to;\n            IPegasysPair(PegasysLibrary.pairFor(factory, input, output)).swap(\n                amount0Out,\n                amount1Out,\n                to,\n                new bytes(0)\n            );\n        }\n    }\n\n    function swapExactTokensForTokens(\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    )\n        external\n        virtual\n        override\n        ensure(deadline)\n        returns (uint256[] memory amounts)\n    {\n        amounts = PegasysLibrary.getAmountsOut(factory, amountIn, path);\n        require(\n            amounts[amounts.length - 1] >= amountOutMin,\n            \"PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT\"\n        );\n        TransferHelper.safeTransferFrom(\n            path[0],\n            msg.sender,\n            PegasysLibrary.pairFor(factory, path[0], path[1]),\n            amounts[0]\n        );\n        _swap(amounts, path, to);\n    }\n\n    function swapTokensForExactTokens(\n        uint256 amountOut,\n        uint256 amountInMax,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    )\n        external\n        virtual\n        override\n        ensure(deadline)\n        returns (uint256[] memory amounts)\n    {\n        amounts = PegasysLibrary.getAmountsIn(factory, amountOut, path);\n        require(\n            amounts[0] <= amountInMax,\n            \"PegasysRouter: EXCESSIVE_INPUT_AMOUNT\"\n        );\n        TransferHelper.safeTransferFrom(\n            path[0],\n            msg.sender,\n            PegasysLibrary.pairFor(factory, path[0], path[1]),\n            amounts[0]\n        );\n        _swap(amounts, path, to);\n    }\n\n    function swapExactSYSForTokens(\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    )\n        external\n        payable\n        virtual\n        override\n        ensure(deadline)\n        returns (uint256[] memory amounts)\n    {\n        require(path[0] == WSYS, \"PegasysRouter: INVALID_PATH\");\n        amounts = PegasysLibrary.getAmountsOut(factory, msg.value, path);\n        require(\n            amounts[amounts.length - 1] >= amountOutMin,\n            \"PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT\"\n        );\n        IWSYS(WSYS).deposit{value: amounts[0]}();\n        assert(\n            IWSYS(WSYS).transfer(\n                PegasysLibrary.pairFor(factory, path[0], path[1]),\n                amounts[0]\n            )\n        );\n        _swap(amounts, path, to);\n    }\n\n    function swapTokensForExactSYS(\n        uint256 amountOut,\n        uint256 amountInMax,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    )\n        external\n        virtual\n        override\n        ensure(deadline)\n        returns (uint256[] memory amounts)\n    {\n        require(path[path.length - 1] == WSYS, \"PegasysRouter: INVALID_PATH\");\n        amounts = PegasysLibrary.getAmountsIn(factory, amountOut, path);\n        require(\n            amounts[0] <= amountInMax,\n            \"PegasysRouter: EXCESSIVE_INPUT_AMOUNT\"\n        );\n        TransferHelper.safeTransferFrom(\n            path[0],\n            msg.sender,\n            PegasysLibrary.pairFor(factory, path[0], path[1]),\n            amounts[0]\n        );\n        _swap(amounts, path, address(this));\n        IWSYS(WSYS).withdraw(amounts[amounts.length - 1]);\n        TransferHelper.safeTransferSYS(to, amounts[amounts.length - 1]);\n    }\n\n    function swapExactTokensForSYS(\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    )\n        external\n        virtual\n        override\n        ensure(deadline)\n        returns (uint256[] memory amounts)\n    {\n        require(path[path.length - 1] == WSYS, \"PegasysRouter: INVALID_PATH\");\n        amounts = PegasysLibrary.getAmountsOut(factory, amountIn, path);\n        require(\n            amounts[amounts.length - 1] >= amountOutMin,\n            \"PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT\"\n        );\n        TransferHelper.safeTransferFrom(\n            path[0],\n            msg.sender,\n            PegasysLibrary.pairFor(factory, path[0], path[1]),\n            amounts[0]\n        );\n        _swap(amounts, path, address(this));\n        IWSYS(WSYS).withdraw(amounts[amounts.length - 1]);\n        TransferHelper.safeTransferSYS(to, amounts[amounts.length - 1]);\n    }\n\n    function swapSYSForExactTokens(\n        uint256 amountOut,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    )\n        external\n        payable\n        virtual\n        override\n        ensure(deadline)\n        returns (uint256[] memory amounts)\n    {\n        require(path[0] == WSYS, \"PegasysRouter: INVALID_PATH\");\n        amounts = PegasysLibrary.getAmountsIn(factory, amountOut, path);\n        require(\n            amounts[0] <= msg.value,\n            \"PegasysRouter: EXCESSIVE_INPUT_AMOUNT\"\n        );\n        IWSYS(WSYS).deposit{value: amounts[0]}();\n        assert(\n            IWSYS(WSYS).transfer(\n                PegasysLibrary.pairFor(factory, path[0], path[1]),\n                amounts[0]\n            )\n        );\n        _swap(amounts, path, to);\n        // refund dust SYS, if any\n        if (msg.value > amounts[0])\n            TransferHelper.safeTransferSYS(msg.sender, msg.value - amounts[0]);\n    }\n\n    // **** SWAP (supporting fee-on-transfer tokens) ****\n    // requires the initial amount to have already been sent to the first pair\n    function _swapSupportingFeeOnTransferTokens(\n        address[] memory path,\n        address _to\n    ) internal virtual {\n        for (uint256 i; i < path.length - 1; i++) {\n            (address input, address output) = (path[i], path[i + 1]);\n            (address token0, ) = PegasysLibrary.sortTokens(input, output);\n            IPegasysPair pair = IPegasysPair(\n                PegasysLibrary.pairFor(factory, input, output)\n            );\n            uint256 amountInput;\n            uint256 amountOutput;\n            {\n                // scope to avoid stack too deep errors\n                (uint256 reserve0, uint256 reserve1, ) = pair.getReserves();\n                (uint256 reserveInput, uint256 reserveOutput) = input == token0\n                    ? (reserve0, reserve1)\n                    : (reserve1, reserve0);\n                amountInput = IERC20(input).balanceOf(address(pair)).sub(\n                    reserveInput\n                );\n                amountOutput = PegasysLibrary.getAmountOut(\n                    amountInput,\n                    reserveInput,\n                    reserveOutput\n                );\n            }\n            (uint256 amount0Out, uint256 amount1Out) = input == token0\n                ? (uint256(0), amountOutput)\n                : (amountOutput, uint256(0));\n            address to = i < path.length - 2\n                ? PegasysLibrary.pairFor(factory, output, path[i + 2])\n                : _to;\n            pair.swap(amount0Out, amount1Out, to, new bytes(0));\n        }\n    }\n\n    function swapExactTokensForTokensSupportingFeeOnTransferTokens(\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external virtual override ensure(deadline) {\n        TransferHelper.safeTransferFrom(\n            path[0],\n            msg.sender,\n            PegasysLibrary.pairFor(factory, path[0], path[1]),\n            amountIn\n        );\n        uint256 balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\n        _swapSupportingFeeOnTransferTokens(path, to);\n        require(\n            IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >=\n                amountOutMin,\n            \"PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT\"\n        );\n    }\n\n    function swapExactSYSForTokensSupportingFeeOnTransferTokens(\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external payable virtual override ensure(deadline) {\n        require(path[0] == WSYS, \"PegasysRouter: INVALID_PATH\");\n        uint256 amountIn = msg.value;\n        IWSYS(WSYS).deposit{value: amountIn}();\n        assert(\n            IWSYS(WSYS).transfer(\n                PegasysLibrary.pairFor(factory, path[0], path[1]),\n                amountIn\n            )\n        );\n        uint256 balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\n        _swapSupportingFeeOnTransferTokens(path, to);\n        require(\n            IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >=\n                amountOutMin,\n            \"PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT\"\n        );\n    }\n\n    function swapExactTokensForSYSSupportingFeeOnTransferTokens(\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external virtual override ensure(deadline) {\n        require(path[path.length - 1] == WSYS, \"PegasysRouter: INVALID_PATH\");\n        TransferHelper.safeTransferFrom(\n            path[0],\n            msg.sender,\n            PegasysLibrary.pairFor(factory, path[0], path[1]),\n            amountIn\n        );\n        _swapSupportingFeeOnTransferTokens(path, address(this));\n        uint256 amountOut = IERC20(WSYS).balanceOf(address(this));\n        require(\n            amountOut >= amountOutMin,\n            \"PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT\"\n        );\n        IWSYS(WSYS).withdraw(amountOut);\n        TransferHelper.safeTransferSYS(to, amountOut);\n    }\n\n    // **** LIBRARY FUNCTIONS ****\n    function quote(\n        uint256 amountA,\n        uint256 reserveA,\n        uint256 reserveB\n    ) public pure virtual override returns (uint256 amountB) {\n        return PegasysLibrary.quote(amountA, reserveA, reserveB);\n    }\n\n    function getAmountOut(\n        uint256 amountIn,\n        uint256 reserveIn,\n        uint256 reserveOut\n    ) public pure virtual override returns (uint256 amountOut) {\n        return PegasysLibrary.getAmountOut(amountIn, reserveIn, reserveOut);\n    }\n\n    function getAmountIn(\n        uint256 amountOut,\n        uint256 reserveIn,\n        uint256 reserveOut\n    ) public pure virtual override returns (uint256 amountIn) {\n        return PegasysLibrary.getAmountIn(amountOut, reserveIn, reserveOut);\n    }\n\n    function getAmountsOut(uint256 amountIn, address[] memory path)\n        public\n        view\n        virtual\n        override\n        returns (uint256[] memory amounts)\n    {\n        return PegasysLibrary.getAmountsOut(factory, amountIn, path);\n    }\n\n    function getAmountsIn(uint256 amountOut, address[] memory path)\n        public\n        view\n        virtual\n        override\n        returns (uint256[] memory amounts)\n    {\n        return PegasysLibrary.getAmountsIn(factory, amountOut, path);\n    }\n}\n"
      },
      "contracts/pegasys-core/interfaces/IPegasysFactory.sol": {
        "content": "// SPDX-License-Identifier: GNU\npragma solidity >=0.5.0;\n\ninterface IPegasysFactory {\n    event PairCreated(\n        address indexed token0,\n        address indexed token1,\n        address pair,\n        uint256\n    );\n\n    function feeTo() external view returns (address);\n\n    function feeToSetter() external view returns (address);\n\n    function getPair(address tokenA, address tokenB)\n        external\n        view\n        returns (address pair);\n\n    function allPairs(uint256) external view returns (address pair);\n\n    function allPairsLength() external view returns (uint256);\n\n    function createPair(address tokenA, address tokenB)\n        external\n        returns (address pair);\n\n    function setFeeTo(address) external;\n\n    function setFeeToSetter(address) external;\n}\n"
      },
      "contracts/pegasys-lib/libraries/TransferHelper.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.6.0;\n\n// helper methods for interacting with ERC20 tokens and sending SYS that do not consistently return true/false\nlibrary TransferHelper {\n    function safeApprove(\n        address token,\n        address to,\n        uint256 value\n    ) internal {\n        // bytes4(keccak256(bytes('approve(address,uint256)')));\n        (bool success, bytes memory data) = token.call(\n            abi.encodeWithSelector(0x095ea7b3, to, value)\n        );\n        require(\n            success && (data.length == 0 || abi.decode(data, (bool))),\n            \"TransferHelper: APPROVE_FAILED\"\n        );\n    }\n\n    function safeTransfer(\n        address token,\n        address to,\n        uint256 value\n    ) internal {\n        // bytes4(keccak256(bytes('transfer(address,uint256)')));\n        (bool success, bytes memory data) = token.call(\n            abi.encodeWithSelector(0xa9059cbb, to, value)\n        );\n        require(\n            success && (data.length == 0 || abi.decode(data, (bool))),\n            \"TransferHelper: TRANSFER_FAILED\"\n        );\n    }\n\n    function safeTransferFrom(\n        address token,\n        address from,\n        address to,\n        uint256 value\n    ) internal {\n        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\n        (bool success, bytes memory data) = token.call(\n            abi.encodeWithSelector(0x23b872dd, from, to, value)\n        );\n        require(\n            success && (data.length == 0 || abi.decode(data, (bool))),\n            \"TransferHelper: TRANSFER_FROM_FAILED\"\n        );\n    }\n\n    function safeTransferSYS(address to, uint256 value) internal {\n        (bool success, ) = to.call{value: value}(new bytes(0));\n        require(success, \"TransferHelper: SYS_TRANSFER_FAILED\");\n    }\n}\n"
      },
      "contracts/pegasys-periphery/interfaces/IPegasysRouter.sol": {
        "content": "// SPDX-License-Identifier: GNU\npragma solidity >=0.6.2;\n\ninterface IPegasysRouter {\n    function factory() external pure returns (address);\n\n    function WSYS() external pure returns (address);\n\n    function addLiquidity(\n        address tokenA,\n        address tokenB,\n        uint256 amountADesired,\n        uint256 amountBDesired,\n        uint256 amountAMin,\n        uint256 amountBMin,\n        address to,\n        uint256 deadline\n    )\n        external\n        returns (\n            uint256 amountA,\n            uint256 amountB,\n            uint256 liquidity\n        );\n\n    function addLiquiditySYS(\n        address token,\n        uint256 amountTokenDesired,\n        uint256 amountTokenMin,\n        uint256 amountSYSMin,\n        address to,\n        uint256 deadline\n    )\n        external\n        payable\n        returns (\n            uint256 amountToken,\n            uint256 amountSYS,\n            uint256 liquidity\n        );\n\n    function removeLiquidity(\n        address tokenA,\n        address tokenB,\n        uint256 liquidity,\n        uint256 amountAMin,\n        uint256 amountBMin,\n        address to,\n        uint256 deadline\n    ) external returns (uint256 amountA, uint256 amountB);\n\n    function removeLiquiditySYS(\n        address token,\n        uint256 liquidity,\n        uint256 amountTokenMin,\n        uint256 amountSYSMin,\n        address to,\n        uint256 deadline\n    ) external returns (uint256 amountToken, uint256 amountSYS);\n\n    function removeLiquidityWithPermit(\n        address tokenA,\n        address tokenB,\n        uint256 liquidity,\n        uint256 amountAMin,\n        uint256 amountBMin,\n        address to,\n        uint256 deadline,\n        bool approveMax,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external returns (uint256 amountA, uint256 amountB);\n\n    function removeLiquiditySYSWithPermit(\n        address token,\n        uint256 liquidity,\n        uint256 amountTokenMin,\n        uint256 amountSYSMin,\n        address to,\n        uint256 deadline,\n        bool approveMax,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external returns (uint256 amountToken, uint256 amountSYS);\n\n    function swapExactTokensForTokens(\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external returns (uint256[] memory amounts);\n\n    function swapTokensForExactTokens(\n        uint256 amountOut,\n        uint256 amountInMax,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external returns (uint256[] memory amounts);\n\n    function swapExactSYSForTokens(\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external payable returns (uint256[] memory amounts);\n\n    function swapTokensForExactSYS(\n        uint256 amountOut,\n        uint256 amountInMax,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external returns (uint256[] memory amounts);\n\n    function swapExactTokensForSYS(\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external returns (uint256[] memory amounts);\n\n    function swapSYSForExactTokens(\n        uint256 amountOut,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external payable returns (uint256[] memory amounts);\n\n    function quote(\n        uint256 amountA,\n        uint256 reserveA,\n        uint256 reserveB\n    ) external pure returns (uint256 amountB);\n\n    function getAmountOut(\n        uint256 amountIn,\n        uint256 reserveIn,\n        uint256 reserveOut\n    ) external pure returns (uint256 amountOut);\n\n    function getAmountIn(\n        uint256 amountOut,\n        uint256 reserveIn,\n        uint256 reserveOut\n    ) external pure returns (uint256 amountIn);\n\n    function getAmountsOut(uint256 amountIn, address[] calldata path)\n        external\n        view\n        returns (uint256[] memory amounts);\n\n    function getAmountsIn(uint256 amountOut, address[] calldata path)\n        external\n        view\n        returns (uint256[] memory amounts);\n\n    function removeLiquiditySYSSupportingFeeOnTransferTokens(\n        address token,\n        uint256 liquidity,\n        uint256 amountTokenMin,\n        uint256 amountSYSMin,\n        address to,\n        uint256 deadline\n    ) external returns (uint256 amountSYS);\n\n    function removeLiquiditySYSWithPermitSupportingFeeOnTransferTokens(\n        address token,\n        uint256 liquidity,\n        uint256 amountTokenMin,\n        uint256 amountSYSMin,\n        address to,\n        uint256 deadline,\n        bool approveMax,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external returns (uint256 amountSYS);\n\n    function swapExactTokensForTokensSupportingFeeOnTransferTokens(\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external;\n\n    function swapExactSYSForTokensSupportingFeeOnTransferTokens(\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external payable;\n\n    function swapExactTokensForSYSSupportingFeeOnTransferTokens(\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external;\n}\n"
      },
      "contracts/pegasys-periphery/libraries/PegasysLibrary.sol": {
        "content": "// SPDX-License-Identifier: GNU\npragma solidity >=0.5.0;\n\nimport \"../../pegasys-core/interfaces/IPegasysFactory.sol\";\nimport \"../../pegasys-core/interfaces/IPegasysPair.sol\";\n\nimport \"./SafeMath.sol\";\n\nlibrary PegasysLibrary {\n    using SafeMath for uint256;\n\n    // returns sorted token addresses, used to handle return values from pairs sorted in this order\n    function sortTokens(address tokenA, address tokenB)\n        internal\n        pure\n        returns (address token0, address token1)\n    {\n        require(tokenA != tokenB, \"PegasysLibrary: IDENTICAL_ADDRESSES\");\n        (token0, token1) = tokenA < tokenB\n            ? (tokenA, tokenB)\n            : (tokenB, tokenA);\n        require(token0 != address(0), \"PegasysLibrary: ZERO_ADDRESS\");\n    }\n\n    // calculates the CREATE2 address for a pair without making any external calls\n    function pairFor(\n        address factory,\n        address tokenA,\n        address tokenB\n    ) internal pure returns (address pair) {\n        (address token0, address token1) = sortTokens(tokenA, tokenB);\n        pair = address(\n            uint256(\n                keccak256(\n                    abi.encodePacked(\n                        hex\"ff\",\n                        factory,\n                        keccak256(abi.encodePacked(token0, token1)),\n                        hex\"85c9b07c539b322c33da730d88df8396983c35a411da73d3d6c2278474890833\" // init code hash\n                    )\n                )\n            )\n        );\n    }\n\n    // fetches and sorts the reserves for a pair\n    function getReserves(\n        address factory,\n        address tokenA,\n        address tokenB\n    ) internal view returns (uint256 reserveA, uint256 reserveB) {\n        (address token0, ) = sortTokens(tokenA, tokenB);\n        (uint256 reserve0, uint256 reserve1, ) = IPegasysPair(\n            pairFor(factory, tokenA, tokenB)\n        ).getReserves();\n        (reserveA, reserveB) = tokenA == token0\n            ? (reserve0, reserve1)\n            : (reserve1, reserve0);\n    }\n\n    // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset\n    function quote(\n        uint256 amountA,\n        uint256 reserveA,\n        uint256 reserveB\n    ) internal pure returns (uint256 amountB) {\n        require(amountA > 0, \"PegasysLibrary: INSUFFICIENT_AMOUNT\");\n        require(\n            reserveA > 0 && reserveB > 0,\n            \"PegasysLibrary: INSUFFICIENT_LIQUIDITY\"\n        );\n        amountB = amountA.mul(reserveB) / reserveA;\n    }\n\n    // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset\n    function getAmountOut(\n        uint256 amountIn,\n        uint256 reserveIn,\n        uint256 reserveOut\n    ) internal pure returns (uint256 amountOut) {\n        require(amountIn > 0, \"PegasysLibrary: INSUFFICIENT_INPUT_AMOUNT\");\n        require(\n            reserveIn > 0 && reserveOut > 0,\n            \"PegasysLibrary: INSUFFICIENT_LIQUIDITY\"\n        );\n        uint256 amountInWithFee = amountIn.mul(997);\n        uint256 numerator = amountInWithFee.mul(reserveOut);\n        uint256 denominator = reserveIn.mul(1000).add(amountInWithFee);\n        amountOut = numerator / denominator;\n    }\n\n    // given an output amount of an asset and pair reserves, returns a required input amount of the other asset\n    function getAmountIn(\n        uint256 amountOut,\n        uint256 reserveIn,\n        uint256 reserveOut\n    ) internal pure returns (uint256 amountIn) {\n        require(amountOut > 0, \"PegasysLibrary: INSUFFICIENT_OUTPUT_AMOUNT\");\n        require(\n            reserveIn > 0 && reserveOut > 0,\n            \"PegasysLibrary: INSUFFICIENT_LIQUIDITY\"\n        );\n        uint256 numerator = reserveIn.mul(amountOut).mul(1000);\n        uint256 denominator = reserveOut.sub(amountOut).mul(997);\n        amountIn = (numerator / denominator).add(1);\n    }\n\n    // performs chained getAmountOut calculations on any number of pairs\n    function getAmountsOut(\n        address factory,\n        uint256 amountIn,\n        address[] memory path\n    ) internal view returns (uint256[] memory amounts) {\n        require(path.length >= 2, \"PegasysLibrary: INVALID_PATH\");\n        amounts = new uint256[](path.length);\n        amounts[0] = amountIn;\n        for (uint256 i; i < path.length - 1; i++) {\n            (uint256 reserveIn, uint256 reserveOut) = getReserves(\n                factory,\n                path[i],\n                path[i + 1]\n            );\n            amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);\n        }\n    }\n\n    // performs chained getAmountIn calculations on any number of pairs\n    function getAmountsIn(\n        address factory,\n        uint256 amountOut,\n        address[] memory path\n    ) internal view returns (uint256[] memory amounts) {\n        require(path.length >= 2, \"PegasysLibrary: INVALID_PATH\");\n        amounts = new uint256[](path.length);\n        amounts[amounts.length - 1] = amountOut;\n        for (uint256 i = path.length - 1; i > 0; i--) {\n            (uint256 reserveIn, uint256 reserveOut) = getReserves(\n                factory,\n                path[i - 1],\n                path[i]\n            );\n            amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);\n        }\n    }\n}\n"
      },
      "contracts/pegasys-periphery/libraries/SafeMath.sol": {
        "content": "// SPDX-License-Identifier: GNU\npragma solidity >=0.6.6 <0.8.0;\n\n// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)\n\nlibrary SafeMath {\n    function add(uint256 x, uint256 y) internal pure returns (uint256 z) {\n        require((z = x + y) >= x, \"ds-math-add-overflow\");\n    }\n\n    function sub(uint256 x, uint256 y) internal pure returns (uint256 z) {\n        require((z = x - y) <= x, \"ds-math-sub-underflow\");\n    }\n\n    function mul(uint256 x, uint256 y) internal pure returns (uint256 z) {\n        require(y == 0 || (z = x * y) / y == x, \"ds-math-mul-overflow\");\n    }\n\n    function div(uint256 a, uint256 b) internal pure returns (uint256 c) {\n        require(b > 0, \"SafeMath: Div by Zero\");\n        c = a / b;\n    }\n}\n"
      },
      "contracts/pegasys-periphery/interfaces/IERC20.sol": {
        "content": "// SPDX-License-Identifier: GNU\npragma solidity >=0.5.0;\n\ninterface IERC20 {\n    event Approval(\n        address indexed owner,\n        address indexed spender,\n        uint256 value\n    );\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    function name() external view returns (string memory);\n\n    function symbol() external view returns (string memory);\n\n    function decimals() external view returns (uint8);\n\n    function totalSupply() external view returns (uint256);\n\n    function balanceOf(address owner) external view returns (uint256);\n\n    function allowance(address owner, address spender)\n        external\n        view\n        returns (uint256);\n\n    function approve(address spender, uint256 value) external returns (bool);\n\n    function transfer(address to, uint256 value) external returns (bool);\n\n    function transferFrom(\n        address from,\n        address to,\n        uint256 value\n    ) external returns (bool);\n}\n"
      },
      "contracts/pegasys-periphery/interfaces/IWSYS.sol": {
        "content": "// SPDX-License-Identifier: GNU\npragma solidity >=0.5.0;\n\ninterface IWSYS {\n    function deposit() external payable;\n\n    function transfer(address to, uint256 value) external returns (bool);\n\n    function balanceOf(address owner) external view returns (uint256);\n\n    function withdraw(uint256) external;\n}\n"
      },
      "contracts/pegasys-core/interfaces/IPegasysPair.sol": {
        "content": "// SPDX-License-Identifier: GNU\npragma solidity >=0.5.0;\n\ninterface IPegasysPair {\n    event Approval(\n        address indexed owner,\n        address indexed spender,\n        uint256 value\n    );\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    function name() external pure returns (string memory);\n\n    function symbol() external pure returns (string memory);\n\n    function decimals() external pure returns (uint8);\n\n    function totalSupply() external view returns (uint256);\n\n    function balanceOf(address owner) external view returns (uint256);\n\n    function allowance(address owner, address spender)\n        external\n        view\n        returns (uint256);\n\n    function approve(address spender, uint256 value) external returns (bool);\n\n    function transfer(address to, uint256 value) external returns (bool);\n\n    function transferFrom(\n        address from,\n        address to,\n        uint256 value\n    ) external returns (bool);\n\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\n\n    function PERMIT_TYPEHASH() external pure returns (bytes32);\n\n    function nonces(address owner) external view returns (uint256);\n\n    function permit(\n        address owner,\n        address spender,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external;\n\n    event Mint(address indexed sender, uint256 amount0, uint256 amount1);\n    event Burn(\n        address indexed sender,\n        uint256 amount0,\n        uint256 amount1,\n        address indexed to\n    );\n    event Swap(\n        address indexed sender,\n        uint256 amount0In,\n        uint256 amount1In,\n        uint256 amount0Out,\n        uint256 amount1Out,\n        address indexed to\n    );\n    event Sync(uint112 reserve0, uint112 reserve1);\n\n    function MINIMUM_LIQUIDITY() external pure returns (uint256);\n\n    function factory() external view returns (address);\n\n    function token0() external view returns (address);\n\n    function token1() external view returns (address);\n\n    function getReserves()\n        external\n        view\n        returns (\n            uint112 reserve0,\n            uint112 reserve1,\n            uint32 blockTimestampLast\n        );\n\n    function price0CumulativeLast() external view returns (uint256);\n\n    function price1CumulativeLast() external view returns (uint256);\n\n    function kLast() external view returns (uint256);\n\n    function mint(address to) external returns (uint256 liquidity);\n\n    function burn(address to)\n        external\n        returns (uint256 amount0, uint256 amount1);\n\n    function swap(\n        uint256 amount0Out,\n        uint256 amount1Out,\n        address to,\n        bytes calldata data\n    ) external;\n\n    function skim(address to) external;\n\n    function sync() external;\n\n    function initialize(address, address) external;\n}\n"
      },
      "contracts/pegasys-periphery/test/ERC20.sol": {
        "content": "pragma solidity =0.6.6;\n\nimport \"../libraries/SafeMath.sol\";\n\ncontract ERC20 {\n    using SafeMath for uint256;\n\n    string public constant name = \"Test Token\";\n    string public constant symbol = \"TT\";\n    uint8 public constant decimals = 18;\n    uint256 public totalSupply;\n    mapping(address => uint256) public balanceOf;\n    mapping(address => mapping(address => uint256)) public allowance;\n\n    bytes32 public DOMAIN_SEPARATOR;\n    // keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\");\n    bytes32 public constant PERMIT_TYPEHASH =\n        0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;\n    mapping(address => uint256) public nonces;\n\n    event Approval(\n        address indexed owner,\n        address indexed spender,\n        uint256 value\n    );\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    constructor(uint256 _totalSupply) public {\n        uint256 chainId;\n        assembly {\n            chainId := chainid()\n        }\n        DOMAIN_SEPARATOR = keccak256(\n            abi.encode(\n                keccak256(\n                    \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"\n                ),\n                keccak256(bytes(name)),\n                keccak256(bytes(\"1\")),\n                chainId,\n                address(this)\n            )\n        );\n        _mint(msg.sender, _totalSupply);\n    }\n\n    function _mint(address to, uint256 value) internal {\n        totalSupply = totalSupply.add(value);\n        balanceOf[to] = balanceOf[to].add(value);\n        emit Transfer(address(0), to, value);\n    }\n\n    function _burn(address from, uint256 value) internal {\n        balanceOf[from] = balanceOf[from].sub(value);\n        totalSupply = totalSupply.sub(value);\n        emit Transfer(from, address(0), value);\n    }\n\n    function _approve(\n        address owner,\n        address spender,\n        uint256 value\n    ) private {\n        allowance[owner][spender] = value;\n        emit Approval(owner, spender, value);\n    }\n\n    function _transfer(\n        address from,\n        address to,\n        uint256 value\n    ) private {\n        balanceOf[from] = balanceOf[from].sub(value);\n        balanceOf[to] = balanceOf[to].add(value);\n        emit Transfer(from, to, value);\n    }\n\n    function approve(address spender, uint256 value) external returns (bool) {\n        _approve(msg.sender, spender, value);\n        return true;\n    }\n\n    function transfer(address to, uint256 value) external returns (bool) {\n        _transfer(msg.sender, to, value);\n        return true;\n    }\n\n    function transferFrom(\n        address from,\n        address to,\n        uint256 value\n    ) external returns (bool) {\n        if (allowance[from][msg.sender] != uint256(-1)) {\n            allowance[from][msg.sender] = allowance[from][msg.sender].sub(\n                value\n            );\n        }\n        _transfer(from, to, value);\n        return true;\n    }\n\n    function permit(\n        address owner,\n        address spender,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external {\n        require(deadline >= block.timestamp, \"EXPIRED\");\n        bytes32 digest = keccak256(\n            abi.encodePacked(\n                \"\\x19\\x01\",\n                DOMAIN_SEPARATOR,\n                keccak256(\n                    abi.encode(\n                        PERMIT_TYPEHASH,\n                        owner,\n                        spender,\n                        value,\n                        nonces[owner]++,\n                        deadline\n                    )\n                )\n            )\n        );\n        address recoveredAddress = ecrecover(digest, v, r, s);\n        require(\n            recoveredAddress != address(0) && recoveredAddress == owner,\n            \"INVALID_SIGNATURE\"\n        );\n        _approve(owner, spender, value);\n    }\n}\n"
      },
      "contracts/pegasys-periphery/test/DeflatingERC20.sol": {
        "content": "pragma solidity =0.6.6;\n\nimport \"../libraries/SafeMath.sol\";\n\ncontract DeflatingERC20 {\n    using SafeMath for uint256;\n\n    string public constant name = \"Deflating Test Token\";\n    string public constant symbol = \"DTT\";\n    uint8 public constant decimals = 18;\n    uint256 public totalSupply;\n    mapping(address => uint256) public balanceOf;\n    mapping(address => mapping(address => uint256)) public allowance;\n\n    bytes32 public DOMAIN_SEPARATOR;\n    // keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\");\n    bytes32 public constant PERMIT_TYPEHASH =\n        0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;\n    mapping(address => uint256) public nonces;\n\n    event Approval(\n        address indexed owner,\n        address indexed spender,\n        uint256 value\n    );\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    constructor(uint256 _totalSupply) public {\n        uint256 chainId;\n        assembly {\n            chainId := chainid()\n        }\n        DOMAIN_SEPARATOR = keccak256(\n            abi.encode(\n                keccak256(\n                    \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"\n                ),\n                keccak256(bytes(name)),\n                keccak256(bytes(\"1\")),\n                chainId,\n                address(this)\n            )\n        );\n        _mint(msg.sender, _totalSupply);\n    }\n\n    function _mint(address to, uint256 value) internal {\n        totalSupply = totalSupply.add(value);\n        balanceOf[to] = balanceOf[to].add(value);\n        emit Transfer(address(0), to, value);\n    }\n\n    function _burn(address from, uint256 value) internal {\n        balanceOf[from] = balanceOf[from].sub(value);\n        totalSupply = totalSupply.sub(value);\n        emit Transfer(from, address(0), value);\n    }\n\n    function _approve(\n        address owner,\n        address spender,\n        uint256 value\n    ) private {\n        allowance[owner][spender] = value;\n        emit Approval(owner, spender, value);\n    }\n\n    function _transfer(\n        address from,\n        address to,\n        uint256 value\n    ) private {\n        uint256 burnAmount = value / 100;\n        _burn(from, burnAmount);\n        uint256 transferAmount = value.sub(burnAmount);\n        balanceOf[from] = balanceOf[from].sub(transferAmount);\n        balanceOf[to] = balanceOf[to].add(transferAmount);\n        emit Transfer(from, to, transferAmount);\n    }\n\n    function approve(address spender, uint256 value) external returns (bool) {\n        _approve(msg.sender, spender, value);\n        return true;\n    }\n\n    function transfer(address to, uint256 value) external returns (bool) {\n        _transfer(msg.sender, to, value);\n        return true;\n    }\n\n    function transferFrom(\n        address from,\n        address to,\n        uint256 value\n    ) external returns (bool) {\n        if (allowance[from][msg.sender] != uint256(-1)) {\n            allowance[from][msg.sender] = allowance[from][msg.sender].sub(\n                value\n            );\n        }\n        _transfer(from, to, value);\n        return true;\n    }\n\n    function permit(\n        address owner,\n        address spender,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external {\n        require(deadline >= block.timestamp, \"EXPIRED\");\n        bytes32 digest = keccak256(\n            abi.encodePacked(\n                \"\\x19\\x01\",\n                DOMAIN_SEPARATOR,\n                keccak256(\n                    abi.encode(\n                        PERMIT_TYPEHASH,\n                        owner,\n                        spender,\n                        value,\n                        nonces[owner]++,\n                        deadline\n                    )\n                )\n            )\n        );\n        address recoveredAddress = ecrecover(digest, v, r, s);\n        require(\n            recoveredAddress != address(0) && recoveredAddress == owner,\n            \"INVALID_SIGNATURE\"\n        );\n        _approve(owner, spender, value);\n    }\n}\n"
      },
      "contracts/pegasys-periphery/test/RouterEventEmitter.sol": {
        "content": "pragma solidity =0.6.6;\n\nimport \"../interfaces/IPegasysRouter.sol\";\n\ncontract RouterEventEmitter {\n    event Amounts(uint256[] amounts);\n\n    receive() external payable {}\n\n    function swapExactTokensForTokens(\n        address router,\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external {\n        (bool success, bytes memory returnData) = router.delegatecall(\n            abi.encodeWithSelector(\n                IPegasysRouter(router).swapExactTokensForTokens.selector,\n                amountIn,\n                amountOutMin,\n                path,\n                to,\n                deadline\n            )\n        );\n        assert(success);\n        emit Amounts(abi.decode(returnData, (uint256[])));\n    }\n\n    function swapTokensForExactTokens(\n        address router,\n        uint256 amountOut,\n        uint256 amountInMax,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external {\n        (bool success, bytes memory returnData) = router.delegatecall(\n            abi.encodeWithSelector(\n                IPegasysRouter(router).swapTokensForExactTokens.selector,\n                amountOut,\n                amountInMax,\n                path,\n                to,\n                deadline\n            )\n        );\n        assert(success);\n        emit Amounts(abi.decode(returnData, (uint256[])));\n    }\n\n    function swapExactSYSForTokens(\n        address router,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external payable {\n        (bool success, bytes memory returnData) = router.delegatecall(\n            abi.encodeWithSelector(\n                IPegasysRouter(router).swapExactSYSForTokens.selector,\n                amountOutMin,\n                path,\n                to,\n                deadline\n            )\n        );\n        assert(success);\n        emit Amounts(abi.decode(returnData, (uint256[])));\n    }\n\n    function swapTokensForExactSYS(\n        address router,\n        uint256 amountOut,\n        uint256 amountInMax,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external {\n        (bool success, bytes memory returnData) = router.delegatecall(\n            abi.encodeWithSelector(\n                IPegasysRouter(router).swapTokensForExactSYS.selector,\n                amountOut,\n                amountInMax,\n                path,\n                to,\n                deadline\n            )\n        );\n        assert(success);\n        emit Amounts(abi.decode(returnData, (uint256[])));\n    }\n\n    function swapExactTokensForSYS(\n        address router,\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external {\n        (bool success, bytes memory returnData) = router.delegatecall(\n            abi.encodeWithSelector(\n                IPegasysRouter(router).swapExactTokensForSYS.selector,\n                amountIn,\n                amountOutMin,\n                path,\n                to,\n                deadline\n            )\n        );\n        assert(success);\n        emit Amounts(abi.decode(returnData, (uint256[])));\n    }\n\n    function swapSYSForExactTokens(\n        address router,\n        uint256 amountOut,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external payable {\n        (bool success, bytes memory returnData) = router.delegatecall(\n            abi.encodeWithSelector(\n                IPegasysRouter(router).swapSYSForExactTokens.selector,\n                amountOut,\n                path,\n                to,\n                deadline\n            )\n        );\n        assert(success);\n        emit Amounts(abi.decode(returnData, (uint256[])));\n    }\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 1000
      },
      "outputSelection": {
        "*": {
          "*": [
            "storageLayout",
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "metadata"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "contracts/pegasys-core/interfaces/IPegasysFactory.sol": {
        "IPegasysFactory": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "pair",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "PairCreated",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "allPairs",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pair",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "allPairsLength",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenA",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenB",
                  "type": "address"
                }
              ],
              "name": "createPair",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pair",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "feeTo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "feeToSetter",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenA",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenB",
                  "type": "address"
                }
              ],
              "name": "getPair",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pair",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "setFeeTo",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "setFeeToSetter",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allPairs(uint256)": "1e3dd18b",
              "allPairsLength()": "574f2ba3",
              "createPair(address,address)": "c9c65396",
              "feeTo()": "017e7e58",
              "feeToSetter()": "094b7415",
              "getPair(address,address)": "e6a43905",
              "setFeeTo(address)": "f46901ed",
              "setFeeToSetter(address)": "a2e74af6"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/pegasys-core/interfaces/IPegasysFactory.sol\":\"IPegasysFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"contracts/pegasys-core/interfaces/IPegasysFactory.sol\":{\"keccak256\":\"0xb915812fa0c8d76f5990c7dd9a53e913faabf720e46b43708c9093b8bc920f80\",\"urls\":[\"bzz-raw://e51eea287d507af0deed0958d1fd1749ab243cc8fa0f17c6c7c0c5c5a8acefda\",\"dweb:/ipfs/QmarCyndC7i4fTaE7LzK3ZDrFpCRRWdghmV8caTrbV3ffx\"]}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          }
        }
      },
      "contracts/pegasys-core/interfaces/IPegasysPair.sol": {
        "IPegasysPair": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount0",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount1",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount0",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount1",
                  "type": "uint256"
                }
              ],
              "name": "Mint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount0In",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount1In",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount0Out",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount1Out",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "Swap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint112",
                  "name": "reserve0",
                  "type": "uint112"
                },
                {
                  "indexed": false,
                  "internalType": "uint112",
                  "name": "reserve1",
                  "type": "uint112"
                }
              ],
              "name": "Sync",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MINIMUM_LIQUIDITY",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount0",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount1",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "factory",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getReserves",
              "outputs": [
                {
                  "internalType": "uint112",
                  "name": "reserve0",
                  "type": "uint112"
                },
                {
                  "internalType": "uint112",
                  "name": "reserve1",
                  "type": "uint112"
                },
                {
                  "internalType": "uint32",
                  "name": "blockTimestampLast",
                  "type": "uint32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "initialize",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "kLast",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price0CumulativeLast",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price1CumulativeLast",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "skim",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount0Out",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount1Out",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "swap",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "sync",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token0",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token1",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "MINIMUM_LIQUIDITY()": "ba9a7a56",
              "PERMIT_TYPEHASH()": "30adf81f",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "burn(address)": "89afcb44",
              "decimals()": "313ce567",
              "factory()": "c45a0155",
              "getReserves()": "0902f1ac",
              "initialize(address,address)": "485cc955",
              "kLast()": "7464fc3d",
              "mint(address)": "6a627842",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "price0CumulativeLast()": "5909c0d5",
              "price1CumulativeLast()": "5a3d5493",
              "skim(address)": "bc25cf77",
              "swap(uint256,uint256,address,bytes)": "022c0d9f",
              "symbol()": "95d89b41",
              "sync()": "fff6cae9",
              "token0()": "0dfe1681",
              "token1()": "d21220a7",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/pegasys-core/interfaces/IPegasysPair.sol\":\"IPegasysPair\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"contracts/pegasys-core/interfaces/IPegasysPair.sol\":{\"keccak256\":\"0xe06142fe264492614787818ad0426b4951c1055d6e0d3fe623dcfa15fa720c1c\",\"urls\":[\"bzz-raw://6018cb9b34372172b8aac92095bb1246758ced102c88a1817238c666f094dc1a\",\"dweb:/ipfs/QmUAEPt7Qr3Yus9Qp4sQ3m6c8DouM4rnd6nvXHyCknRWPs\"]}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          }
        }
      },
      "contracts/pegasys-lib/libraries/TransferHelper.sol": {
        "TransferHelper": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d4b00a43c7eab9f4d061d086f26c6b09d3b084654f182447adce29a43e73625f64736f6c63430006060033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD4 0xB0 EXP NUMBER 0xC7 0xEA 0xB9 DELEGATECALL 0xD0 PUSH2 0xD086 CALLCODE PUSH13 0x6B09D3B084654F182447ADCE29 LOG4 RETURNDATACOPY PUSH20 0x625F64736F6C6343000606003300000000000000 ",
              "sourceMap": "183:1630:2:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d4b00a43c7eab9f4d061d086f26c6b09d3b084654f182447adce29a43e73625f64736f6c63430006060033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD4 0xB0 EXP NUMBER 0xC7 0xEA 0xB9 DELEGATECALL 0xD0 PUSH2 0xD086 CALLCODE PUSH13 0x6B09D3B084654F182447ADCE29 LOG4 RETURNDATACOPY PUSH20 0x625F64736F6C6343000606003300000000000000 ",
              "sourceMap": "183:1630:2:-:0;;;;;;12:1:-1;9;2:12"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/pegasys-lib/libraries/TransferHelper.sol\":\"TransferHelper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"contracts/pegasys-lib/libraries/TransferHelper.sol\":{\"keccak256\":\"0xbf42c75c3c7805c6b4769f6555a33c81291c96e6d0984ae60989e446d98af568\",\"urls\":[\"bzz-raw://afadc96fba4e2342c1befc67b097ccc3f8e521495b189ce92a494b76757518f3\",\"dweb:/ipfs/Qmf7eqdQiXce6opbYPJM3yhGtZTFX2uEh94gyjEM5P9sYE\"]}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          }
        }
      },
      "contracts/pegasys-periphery/PegasysRouter.sol": {
        "PegasysRouter": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_factory",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_WSYS",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "WSYS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenA",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenB",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amountADesired",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountBDesired",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountAMin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountBMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "addLiquidity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountA",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountB",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amountTokenDesired",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountTokenMin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountSYSMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "addLiquiditySYS",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountToken",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountSYS",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "factory",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveOut",
                  "type": "uint256"
                }
              ],
              "name": "getAmountIn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveOut",
                  "type": "uint256"
                }
              ],
              "name": "getAmountOut",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                }
              ],
              "name": "getAmountsIn",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                }
              ],
              "name": "getAmountsOut",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountA",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveA",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveB",
                  "type": "uint256"
                }
              ],
              "name": "quote",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountB",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenA",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenB",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountAMin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountBMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "removeLiquidity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountA",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountB",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountTokenMin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountSYSMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "removeLiquiditySYS",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountToken",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountSYS",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountTokenMin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountSYSMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "removeLiquiditySYSSupportingFeeOnTransferTokens",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountSYS",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountTokenMin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountSYSMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "approveMax",
                  "type": "bool"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "removeLiquiditySYSWithPermit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountToken",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountSYS",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountTokenMin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountSYSMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "approveMax",
                  "type": "bool"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "removeLiquiditySYSWithPermitSupportingFeeOnTransferTokens",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountSYS",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenA",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenB",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountAMin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountBMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "approveMax",
                  "type": "bool"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "removeLiquidityWithPermit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountA",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountB",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOutMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapExactSYSForTokens",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOutMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapExactSYSForTokensSupportingFeeOnTransferTokens",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountOutMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapExactTokensForSYS",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountOutMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapExactTokensForSYSSupportingFeeOnTransferTokens",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountOutMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapExactTokensForTokens",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountOutMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapSYSForExactTokens",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountInMax",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapTokensForExactSYS",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountInMax",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapTokensForExactTokens",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60c060405234801561001057600080fd5b5060405162004958380380620049588339818101604052604081101561003557600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c6147d3620001856000398061019e5280610d3d5280610de45280610e58528061119e52806111d9528061128252806112f7528061144c52806114d452806116a852806118c05280611a085280611b605280611be85280611fc5528061201b528061204f52806120c35280612587528061263652806129b05280612b5a5280612de25280612eee5280612fa45280613054525080610e8a528061139c52806115065280611748528061181c52806119865280611aad5280611c1a5280611d255280611e6b5280611ff952806122905280612482528061272252806129335280612a505280612b085280612b385280612cb05280613032528061326752806133ed5280613b1c5280613b525280613f99528061406052806140e052506147d36000f3fe60806040526004361061018e5760003560e01c806385f8c259116100d6578063c78c12cf1161007f578063e8e3370011610059578063e8e3370014610b7f578063ee8794c414610be1578063f1a730bd14610c79576101c7565b8063c78c12cf146109bd578063d06ca61f14610a55578063dfd9111b14610b0c576101c7565b8063ad615dec116100b0578063ad615dec14610915578063baa2abde1461094b578063c45a0155146109a8576101c7565b806385f8c259146107f45780638803dbee1461082a578063aab4c40b146108c2576101c7565b80631f00ca741161013857806338ed17391161011257806338ed1739146106605780633c7356d5146106f85780635c11d7951461075c576101c7565b80631f00ca74146104a55780631fef23891461055c5780632195995c146105e2576101c7565b806308b0b4351161016957806308b0b4351461030657806308e4e89e14610337578063181950fd1461040d576101c7565b8062121258146101cc578063016c841414610252578063054d50d4146102be576101c7565b366101c757336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101c557fe5b005b600080fd5b6101c5600480360360808110156101e257600080fd5b8135919081019060408101602082013564010000000081111561020457600080fd5b82018360208201111561021657600080fd5b8035906020019184602083028401116401000000008311171561023857600080fd5b91935091506001600160a01b038135169060200135610cec565b34801561025e57600080fd5b506102a5600480360360c081101561027557600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611146565b6040805192835260208301919091528051918290030190f35b3480156102ca57600080fd5b506102f4600480360360608110156102e157600080fd5b508035906020810135906040013561126b565b60408051918252519081900360200190f35b34801561031257600080fd5b5061031b611280565b604080516001600160a01b039092168252519081900360200190f35b6103bd6004803603608081101561034d57600080fd5b8135919081019060408101602082013564010000000081111561036f57600080fd5b82018360208201111561038157600080fd5b803590602001918460208302840111640100000000831117156103a357600080fd5b91935091506001600160a01b0381351690602001356112a4565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103f95781810151838201526020016103e1565b505050509050019250505060405180910390f35b34801561041957600080fd5b506103bd600480360360a081101561043057600080fd5b81359160208101359181019060608101604082013564010000000081111561045757600080fd5b82018360208201111561046957600080fd5b8035906020019184602083028401116401000000008311171561048b57600080fd5b91935091506001600160a01b03813516906020013561164d565b3480156104b157600080fd5b506103bd600480360360408110156104c857600080fd5b813591908101906040810160208201356401000000008111156104ea57600080fd5b8201836020820111156104fc57600080fd5b8035906020019184602083028401116401000000008311171561051e57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061197f945050505050565b6103bd6004803603608081101561057257600080fd5b8135919081019060408101602082013564010000000081111561059457600080fd5b8201836020820111156105a657600080fd5b803590602001918460208302840111640100000000831117156105c857600080fd5b91935091506001600160a01b0381351690602001356119b5565b3480156105ee57600080fd5b506102a5600480360361016081101561060657600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611d1b565b34801561066c57600080fd5b506103bd600480360360a081101561068357600080fd5b8135916020810135918101906060810160408201356401000000008111156106aa57600080fd5b8201836020820111156106bc57600080fd5b803590602001918460208302840111640100000000831117156106de57600080fd5b91935091506001600160a01b038135169060200135611e15565b61073e600480360360c081101561070e57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611f6b565b60408051938452602084019290925282820152519081900360600190f35b34801561076857600080fd5b506101c5600480360360a081101561077f57600080fd5b8135916020810135918101906060810160408201356401000000008111156107a657600080fd5b8201836020820111156107b857600080fd5b803590602001918460208302840111640100000000831117156107da57600080fd5b91935091506001600160a01b03813516906020013561221b565b34801561080057600080fd5b506102f46004803603606081101561081757600080fd5b508035906020810135906040013561241f565b34801561083657600080fd5b506103bd600480360360a081101561084d57600080fd5b81359160208101359181019060608101604082013564010000000081111561087457600080fd5b82018360208201111561088657600080fd5b803590602001918460208302840111640100000000831117156108a857600080fd5b91935091506001600160a01b03813516906020013561242c565b3480156108ce57600080fd5b506102f4600480360360c08110156108e557600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612530565b34801561092157600080fd5b506102f46004803603606081101561093857600080fd5b50803590602081013590604001356126bc565b34801561095757600080fd5b506102a5600480360360e081101561096e57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c001356126c9565b3480156109b457600080fd5b5061031b612931565b3480156109c957600080fd5b506103bd600480360360a08110156109e057600080fd5b813591602081013591810190606081016040820135640100000000811115610a0757600080fd5b820183602082011115610a1957600080fd5b80359060200191846020830284011164010000000083111715610a3b57600080fd5b91935091506001600160a01b038135169060200135612955565b348015610a6157600080fd5b506103bd60048036036040811015610a7857600080fd5b81359190810190604081016020820135640100000000811115610a9a57600080fd5b820183602082011115610aac57600080fd5b80359060200191846020830284011164010000000083111715610ace57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612b01945050505050565b348015610b1857600080fd5b506102a56004803603610140811015610b3057600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135612b2e565b348015610b8b57600080fd5b5061073e6004803603610100811015610ba357600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135612c42565b348015610bed57600080fd5b506101c5600480360360a0811015610c0457600080fd5b813591602081013591810190606081016040820135640100000000811115610c2b57600080fd5b820183602082011115610c3d57600080fd5b80359060200191846020830284011164010000000083111715610c5f57600080fd5b91935091506001600160a01b038135169060200135612d89565b348015610c8557600080fd5b506102f46004803603610140811015610c9d57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e0820135169061010081013590610120013561302a565b8042811015610d3b576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685856000818110610d7257fe5b905060200201356001600160a01b03166001600160a01b031614610ddd576040805162461bcd60e51b815260206004820152601b60248201527f50656761737973526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610e3d57600080fd5b505af1158015610e51573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb610ee87f000000000000000000000000000000000000000000000000000000000000000089896000818110610eb657fe5b905060200201356001600160a01b03168a8a6001818110610ed357fe5b905060200201356001600160a01b0316613138565b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610f3857600080fd5b505af1158015610f4c573d6000803e3d6000fd5b505050506040513d6020811015610f6257600080fd5b5051610f6a57fe5b600086866000198101818110610f7c57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610fe157600080fd5b505afa158015610ff5573d6000803e3d6000fd5b505050506040513d602081101561100b57600080fd5b5051604080516020898102828101820190935289825292935061104d9290918a918a918291850190849080828437600092019190915250899250613210915050565b876110ff828989600019810181811061106257fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156110c757600080fd5b505afa1580156110db573d6000803e3d6000fd5b505050506040513d60208110156110f157600080fd5b50519063ffffffff61354d16565b101561113c5760405162461bcd60e51b815260040180806020018281038252602981526020018061472c6029913960400191505060405180910390fd5b5050505050505050565b6000808242811015611198576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6111c7897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a6126c9565b90935091506111d78986856135a5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561123d57600080fd5b505af1158015611251573d6000803e3d6000fd5b5050505061125f858361373d565b50965096945050505050565b6000611278848484613830565b949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b606081428110156112f5576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168686600081811061132c57fe5b905060200201356001600160a01b03166001600160a01b031614611397576040805162461bcd60e51b815260206004820152601b60248201527f50656761737973526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b6113f57f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061392092505050565b9150348260008151811061140557fe5b6020026020010151111561144a5760405162461bcd60e51b81526004018080602001828103825260258152602001806147796025913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061148657fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156114b957600080fd5b505af11580156114cd573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6115327f000000000000000000000000000000000000000000000000000000000000000089896000818110610eb657fe5b8460008151811061153f57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561159657600080fd5b505af11580156115aa573d6000803e3d6000fd5b505050506040513d60208110156115c057600080fd5b50516115c857fe5b61160782878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613a6d915050565b8160008151811061161457fe5b602002602001015134111561164357611643338360008151811061163457fe5b6020026020010151340361373d565b5095945050505050565b6060814281101561169e576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868660001981018181106116d857fe5b905060200201356001600160a01b03166001600160a01b031614611743576040805162461bcd60e51b815260206004820152601b60248201527f50656761737973526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b6117a17f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061392092505050565b915086826000815181106117b157fe5b602002602001015111156117f65760405162461bcd60e51b81526004018080602001828103825260258152602001806147796025913960400191505060405180910390fd5b61187f8686600081811061180657fe5b905060200201356001600160a01b0316336118657f00000000000000000000000000000000000000000000000000000000000000008a8a600081811061184857fe5b905060200201356001600160a01b03168b8b6001818110610ed357fe5b8560008151811061187257fe5b6020026020010151613ca6565b6118be82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613a6d915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836001855103815181106118fd57fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561193b57600080fd5b505af115801561194f573d6000803e3d6000fd5b50505050611974848360018551038151811061196757fe5b602002602001015161373d565b509695505050505050565b60606119ac7f00000000000000000000000000000000000000000000000000000000000000008484613920565b90505b92915050565b60608142811015611a06576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110611a3d57fe5b905060200201356001600160a01b03166001600160a01b031614611aa8576040805162461bcd60e51b815260206004820152601b60248201527f50656761737973526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b611b067f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613e1892505050565b91508682600184510381518110611b1957fe5b60200260200101511015611b5e5760405162461bcd60e51b815260040180806020018281038252602981526020018061472c6029913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db083600081518110611b9a57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611bcd57600080fd5b505af1158015611be1573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb611c467f000000000000000000000000000000000000000000000000000000000000000089896000818110610eb657fe5b84600081518110611c5357fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611caa57600080fd5b505af1158015611cbe573d6000803e3d6000fd5b505050506040513d6020811015611cd457600080fd5b5051611cdc57fe5b61164382878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613a6d915050565b6000806000611d4b7f00000000000000000000000000000000000000000000000000000000000000008f8f613138565b9050600087611d5a578c611d5e565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015611dd457600080fd5b505af1158015611de8573d6000803e3d6000fd5b50505050611dfb8f8f8f8f8f8f8f6126c9565b809450819550505050509b509b9950505050505050505050565b60608142811015611e66576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b611ec47f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613e1892505050565b91508682600184510381518110611ed757fe5b60200260200101511015611f1c5760405162461bcd60e51b815260040180806020018281038252602981526020018061472c6029913960400191505060405180910390fd5b611f2c8686600081811061180657fe5b61197482878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613a6d915050565b60008060008342811015611fbf576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b611fed8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c613f4f565b9094509250600061203f7f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000613138565b905061204d8b338388613ca6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b1580156120a857600080fd5b505af11580156120bc573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561214157600080fd5b505af1158015612155573d6000803e3d6000fd5b505050506040513d602081101561216b57600080fd5b505161217357fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b1580156121cb57600080fd5b505af11580156121df573d6000803e3d6000fd5b505050506040513d60208110156121f557600080fd5b505192503484101561220d5761220d3385340361373d565b505096509650969350505050565b804281101561226a576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6122c28585600081811061227a57fe5b905060200201356001600160a01b0316336122bc7f000000000000000000000000000000000000000000000000000000000000000089896000818110610eb657fe5b8a613ca6565b6000858560001981018181106122d457fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561233957600080fd5b505afa15801561234d573d6000803e3d6000fd5b505050506040513d602081101561236357600080fd5b505160408051602088810282810182019093528882529293506123a5929091899189918291850190849080828437600092019190915250889250613210915050565b866110ff82888860001981018181106123ba57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156110c757600080fd5b60006112788484846141f5565b6060814281101561247d576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6124db7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061392092505050565b915086826000815181106124eb57fe5b60200260200101511115611f1c5760405162461bcd60e51b81526004018080602001828103825260258152602001806147796025913960400191505060405180910390fd5b60008142811015612581576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6125b0887f000000000000000000000000000000000000000000000000000000000000000089898930896126c9565b604080516370a0823160e01b8152306004820152905191945061263492508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561260357600080fd5b505afa158015612617573d6000803e3d6000fd5b505050506040513d602081101561262d57600080fd5b50516135a5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561269a57600080fd5b505af11580156126ae573d6000803e3d6000fd5b50505050611974848361373d565b60006112788484846142e5565b600080824281101561271b576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b60006127487f00000000000000000000000000000000000000000000000000000000000000008c8c613138565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b1580156127a357600080fd5b505af11580156127b7573d6000803e3d6000fd5b505050506040513d60208110156127cd57600080fd5b5050604080517f89afcb440000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561283357600080fd5b505af1158015612847573d6000803e3d6000fd5b505050506040513d604081101561285d57600080fd5b508051602090910151909250905060006128778e8e614391565b509050806001600160a01b03168e6001600160a01b03161461289a57818361289d565b82825b90975095508a8710156128e15760405162461bcd60e51b815260040180806020018281038252602481526020018061462b6024913960400191505060405180910390fd5b898610156129205760405162461bcd60e51b81526004018080602001828103825260248152602001806146e56024913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b606081428110156129a6576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868660001981018181106129e057fe5b905060200201356001600160a01b03166001600160a01b031614612a4b576040805162461bcd60e51b815260206004820152601b60248201527f50656761737973526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b612aa97f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613e1892505050565b91508682600184510381518110612abc57fe5b602002602001015110156117f65760405162461bcd60e51b815260040180806020018281038252602981526020018061472c6029913960400191505060405180910390fd5b60606119ac7f00000000000000000000000000000000000000000000000000000000000000008484613e18565b6000806000612b7e7f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000613138565b9050600087612b8d578c612b91565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015612c0757600080fd5b505af1158015612c1b573d6000803e3d6000fd5b50505050612c2d8e8e8e8e8e8e611146565b909f909e509c50505050505050505050505050565b60008060008342811015612c96576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b612ca48c8c8c8c8c8c613f4f565b90945092506000612cd67f00000000000000000000000000000000000000000000000000000000000000008e8e613138565b9050612ce48d338388613ca6565b612cf08c338387613ca6565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015612d4857600080fd5b505af1158015612d5c573d6000803e3d6000fd5b505050506040513d6020811015612d7257600080fd5b5051949d939c50939a509198505050505050505050565b8042811015612dd8576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001685856000198101818110612e1257fe5b905060200201356001600160a01b03166001600160a01b031614612e7d576040805162461bcd60e51b815260206004820152601b60248201527f50656761737973526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b612e8d8585600081811061227a57fe5b612ecb858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613210915050565b604080516370a0823160e01b815230600482015290516000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015612f3557600080fd5b505afa158015612f49573d6000803e3d6000fd5b505050506040513d6020811015612f5f57600080fd5b5051905086811015612fa25760405162461bcd60e51b815260040180806020018281038252602981526020018061472c6029913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561300857600080fd5b505af115801561301c573d6000803e3d6000fd5b5050505061113c848261373d565b6000806130787f00000000000000000000000000000000000000000000000000000000000000008d7f0000000000000000000000000000000000000000000000000000000000000000613138565b9050600086613087578b61308b565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561310157600080fd5b505af1158015613115573d6000803e3d6000fd5b505050506131278d8d8d8d8d8d612530565b9d9c50505050505050505050505050565b60008060006131478585614391565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f85c9b07c539b322c33da730d88df8396983c35a411da73d3d6c2278474890833609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b60005b60018351038110156135485760008084838151811061322e57fe5b602002602001015185846001018151811061324557fe5b602002602001015191509150600061325d8383614391565b509050600061328d7f00000000000000000000000000000000000000000000000000000000000000008585613138565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156132ce57600080fd5b505afa1580156132e2573d6000803e3d6000fd5b505050506040513d60608110156132f857600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a811690891614613335578284613338565b83835b91509150613396828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156110c757600080fd5b95506133a3868383613830565b945050505050600080856001600160a01b0316886001600160a01b0316146133cd578260006133d1565b6000835b91509150600060028c51038a106133e8578a613429565b6134297f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061341c57fe5b6020026020010151613138565b60408051600080825260208201928390527f022c0d9f00000000000000000000000000000000000000000000000000000000835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b838110156134cc5781810151838201526020016134b4565b50505050905090810190601f1680156134f95780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561351b57600080fd5b505af115801561352f573d6000803e3d6000fd5b50506001909b019a506132139950505050505050505050565b505050565b808203828111156119af576040805162461bcd60e51b815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b602083106136505780518252601f199092019160209182019101613631565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146136b2576040519150601f19603f3d011682016040523d82523d6000602084013e6136b7565b606091505b50915091508180156136e55750805115806136e557508080602001905160208110156136e257600080fd5b50515b613736576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106137895780518252601f19909201916020918201910161376a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146137eb576040519150601f19603f3d011682016040523d82523d6000602084013e6137f0565b606091505b50509050806135485760405162461bcd60e51b81526004018080602001828103825260238152602001806147096023913960400191505060405180910390fd5b60008084116138705760405162461bcd60e51b81526004018080602001828103825260298152602001806146026029913960400191505060405180910390fd5b6000831180156138805750600082115b6138bb5760405162461bcd60e51b81526004018080602001828103825260268152602001806146726026913960400191505060405180910390fd5b60006138cf856103e563ffffffff61446f16565b905060006138e3828563ffffffff61446f16565b90506000613909836138fd886103e863ffffffff61446f16565b9063ffffffff6144db16565b905080828161391457fe5b04979650505050505050565b6060600282511015613979576040805162461bcd60e51b815260206004820152601c60248201527f506567617379734c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561399157600080fd5b506040519080825280602002602001820160405280156139bb578160200160208202803683370190505b50905082816001835103815181106139cf57fe5b60209081029190910101528151600019015b8015613a6557600080613a1e878660018603815181106139fd57fe5b6020026020010151878681518110613a1157fe5b6020026020010151614533565b91509150613a40848481518110613a3157fe5b602002602001015183836141f5565b846001850381518110613a4f57fe5b60209081029190910101525050600019016139e1565b509392505050565b60005b6001835103811015613ca057600080848381518110613a8b57fe5b6020026020010151858460010181518110613aa257fe5b6020026020010151915091506000613aba8383614391565b5090506000878560010181518110613ace57fe5b60200260200101519050600080836001600160a01b0316866001600160a01b031614613afc57826000613b00565b6000835b91509150600060028a51038810613b175788613b4b565b613b4b7f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061341c57fe5b9050613b787f00000000000000000000000000000000000000000000000000000000000000008888613138565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015613bb5576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613c26578181015183820152602001613c0e565b50505050905090810190601f168015613c535780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015613c7557600080fd5b505af1158015613c89573d6000803e3d6000fd5b505060019099019850613a70975050505050505050565b50505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b17815292518251600094606094938a169392918291908083835b60208310613d405780518252601f199092019160209182019101613d21565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613da2576040519150601f19603f3d011682016040523d82523d6000602084013e613da7565b606091505b5091509150818015613dd5575080511580613dd55750808060200190516020811015613dd257600080fd5b50515b613e105760405162461bcd60e51b81526004018080602001828103825260248152602001806147556024913960400191505060405180910390fd5b505050505050565b6060600282511015613e71576040805162461bcd60e51b815260206004820152601c60248201527f506567617379734c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613e8957600080fd5b50604051908082528060200260200182016040528015613eb3578160200160208202803683370190505b5090508281600081518110613ec457fe5b60200260200101818152505060005b6001835103811015613a6557600080613f0987868581518110613ef257fe5b6020026020010151878660010181518110613a1157fe5b91509150613f2b848481518110613f1c57fe5b60200260200101518383613830565b848460010181518110613f3a57fe5b60209081029190910101525050600101613ed3565b604080517fe6a439050000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015613fe257600080fd5b505afa158015613ff6573d6000803e3d6000fd5b505050506040513d602081101561400c57600080fd5b50516001600160a01b031614156140d857604080517fc9c653960000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b1580156140ab57600080fd5b505af11580156140bf573d6000803e3d6000fd5b505050506040513d60208110156140d557600080fd5b50505b6000806141067f00000000000000000000000000000000000000000000000000000000000000008b8b614533565b91509150816000148015614118575080155b15614128578793508692506141e8565b60006141358984846142e5565b9050878111614188578581101561417d5760405162461bcd60e51b81526004018080602001828103825260248152602001806146e56024913960400191505060405180910390fd5b8894509250826141e6565b60006141958984866142e5565b9050898111156141a157fe5b878110156141e05760405162461bcd60e51b815260040180806020018281038252602481526020018061462b6024913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b60008084116142355760405162461bcd60e51b815260040180806020018281038252602a8152602001806146bb602a913960400191505060405180910390fd5b6000831180156142455750600082115b6142805760405162461bcd60e51b81526004018080602001828103825260268152602001806146726026913960400191505060405180910390fd5b60006142a46103e8614298868863ffffffff61446f16565b9063ffffffff61446f16565b905060006142be6103e5614298868963ffffffff61354d16565b90506142db60018284816142ce57fe5b049063ffffffff6144db16565b9695505050505050565b60008084116143255760405162461bcd60e51b815260040180806020018281038252602381526020018061464f6023913960400191505060405180910390fd5b6000831180156143355750600082115b6143705760405162461bcd60e51b81526004018080602001828103825260268152602001806146726026913960400191505060405180910390fd5b82614381858463ffffffff61446f16565b8161438857fe5b04949350505050565b600080826001600160a01b0316846001600160a01b031614156143e55760405162461bcd60e51b81526004018080602001828103825260238152602001806146986023913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610614405578284614408565b83835b90925090506001600160a01b038216614468576040805162461bcd60e51b815260206004820152601c60248201527f506567617379734c6962726172793a205a45524f5f4144445245535300000000604482015290519081900360640190fd5b9250929050565b600081158061448a5750508082028282828161448757fe5b04145b6119af576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b808201828110156119af576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006145428585614391565b509050600080614553888888613138565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561458b57600080fd5b505afa15801561459f573d6000803e3d6000fd5b505050506040513d60608110156145b557600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b03878116908416146145ef5780826145f2565b81815b9099909850965050505050505056fe506567617379734c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e5450656761737973526f757465723a20494e53554646494349454e545f415f414d4f554e54506567617379734c6962726172793a20494e53554646494349454e545f414d4f554e54506567617379734c6962726172793a20494e53554646494349454e545f4c4951554944495459506567617379734c6962726172793a204944454e544943414c5f414444524553534553506567617379734c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5450656761737973526f757465723a20494e53554646494349454e545f425f414d4f554e545472616e7366657248656c7065723a205359535f5452414e534645525f4641494c454450656761737973526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c454450656761737973526f757465723a204558434553534956455f494e5055545f414d4f554e54a2646970667358221220262d48ac1510220c499f8defea7e2bc64989a1eca0b97396ed3384b6a8127a5564736f6c63430006060033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x4958 CODESIZE SUB DUP1 PUSH3 0x4958 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x47D3 PUSH3 0x185 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x19E MSTORE DUP1 PUSH2 0xD3D MSTORE DUP1 PUSH2 0xDE4 MSTORE DUP1 PUSH2 0xE58 MSTORE DUP1 PUSH2 0x119E MSTORE DUP1 PUSH2 0x11D9 MSTORE DUP1 PUSH2 0x1282 MSTORE DUP1 PUSH2 0x12F7 MSTORE DUP1 PUSH2 0x144C MSTORE DUP1 PUSH2 0x14D4 MSTORE DUP1 PUSH2 0x16A8 MSTORE DUP1 PUSH2 0x18C0 MSTORE DUP1 PUSH2 0x1A08 MSTORE DUP1 PUSH2 0x1B60 MSTORE DUP1 PUSH2 0x1BE8 MSTORE DUP1 PUSH2 0x1FC5 MSTORE DUP1 PUSH2 0x201B MSTORE DUP1 PUSH2 0x204F MSTORE DUP1 PUSH2 0x20C3 MSTORE DUP1 PUSH2 0x2587 MSTORE DUP1 PUSH2 0x2636 MSTORE DUP1 PUSH2 0x29B0 MSTORE DUP1 PUSH2 0x2B5A MSTORE DUP1 PUSH2 0x2DE2 MSTORE DUP1 PUSH2 0x2EEE MSTORE DUP1 PUSH2 0x2FA4 MSTORE DUP1 PUSH2 0x3054 MSTORE POP DUP1 PUSH2 0xE8A MSTORE DUP1 PUSH2 0x139C MSTORE DUP1 PUSH2 0x1506 MSTORE DUP1 PUSH2 0x1748 MSTORE DUP1 PUSH2 0x181C MSTORE DUP1 PUSH2 0x1986 MSTORE DUP1 PUSH2 0x1AAD MSTORE DUP1 PUSH2 0x1C1A MSTORE DUP1 PUSH2 0x1D25 MSTORE DUP1 PUSH2 0x1E6B MSTORE DUP1 PUSH2 0x1FF9 MSTORE DUP1 PUSH2 0x2290 MSTORE DUP1 PUSH2 0x2482 MSTORE DUP1 PUSH2 0x2722 MSTORE DUP1 PUSH2 0x2933 MSTORE DUP1 PUSH2 0x2A50 MSTORE DUP1 PUSH2 0x2B08 MSTORE DUP1 PUSH2 0x2B38 MSTORE DUP1 PUSH2 0x2CB0 MSTORE DUP1 PUSH2 0x3032 MSTORE DUP1 PUSH2 0x3267 MSTORE DUP1 PUSH2 0x33ED MSTORE DUP1 PUSH2 0x3B1C MSTORE DUP1 PUSH2 0x3B52 MSTORE DUP1 PUSH2 0x3F99 MSTORE DUP1 PUSH2 0x4060 MSTORE DUP1 PUSH2 0x40E0 MSTORE POP PUSH2 0x47D3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x85F8C259 GT PUSH2 0xD6 JUMPI DUP1 PUSH4 0xC78C12CF GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xE8E33700 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE8E33700 EQ PUSH2 0xB7F JUMPI DUP1 PUSH4 0xEE8794C4 EQ PUSH2 0xBE1 JUMPI DUP1 PUSH4 0xF1A730BD EQ PUSH2 0xC79 JUMPI PUSH2 0x1C7 JUMP JUMPDEST DUP1 PUSH4 0xC78C12CF EQ PUSH2 0x9BD JUMPI DUP1 PUSH4 0xD06CA61F EQ PUSH2 0xA55 JUMPI DUP1 PUSH4 0xDFD9111B EQ PUSH2 0xB0C JUMPI PUSH2 0x1C7 JUMP JUMPDEST DUP1 PUSH4 0xAD615DEC GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0xAD615DEC EQ PUSH2 0x915 JUMPI DUP1 PUSH4 0xBAA2ABDE EQ PUSH2 0x94B JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x9A8 JUMPI PUSH2 0x1C7 JUMP JUMPDEST DUP1 PUSH4 0x85F8C259 EQ PUSH2 0x7F4 JUMPI DUP1 PUSH4 0x8803DBEE EQ PUSH2 0x82A JUMPI DUP1 PUSH4 0xAAB4C40B EQ PUSH2 0x8C2 JUMPI PUSH2 0x1C7 JUMP JUMPDEST DUP1 PUSH4 0x1F00CA74 GT PUSH2 0x138 JUMPI DUP1 PUSH4 0x38ED1739 GT PUSH2 0x112 JUMPI DUP1 PUSH4 0x38ED1739 EQ PUSH2 0x660 JUMPI DUP1 PUSH4 0x3C7356D5 EQ PUSH2 0x6F8 JUMPI DUP1 PUSH4 0x5C11D795 EQ PUSH2 0x75C JUMPI PUSH2 0x1C7 JUMP JUMPDEST DUP1 PUSH4 0x1F00CA74 EQ PUSH2 0x4A5 JUMPI DUP1 PUSH4 0x1FEF2389 EQ PUSH2 0x55C JUMPI DUP1 PUSH4 0x2195995C EQ PUSH2 0x5E2 JUMPI PUSH2 0x1C7 JUMP JUMPDEST DUP1 PUSH4 0x8B0B435 GT PUSH2 0x169 JUMPI DUP1 PUSH4 0x8B0B435 EQ PUSH2 0x306 JUMPI DUP1 PUSH4 0x8E4E89E EQ PUSH2 0x337 JUMPI DUP1 PUSH4 0x181950FD EQ PUSH2 0x40D JUMPI PUSH2 0x1C7 JUMP JUMPDEST DUP1 PUSH3 0x121258 EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x16C8414 EQ PUSH2 0x252 JUMPI DUP1 PUSH4 0x54D50D4 EQ PUSH2 0x2BE JUMPI PUSH2 0x1C7 JUMP JUMPDEST CALLDATASIZE PUSH2 0x1C7 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x1C5 JUMPI INVALID JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xCEC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x1146 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x126B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31B PUSH2 0x1280 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x34D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x36F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x12A4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3F9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3E1 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x419 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x48B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x164D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x197F SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x572 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x594 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x19B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x160 DUP2 LT ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH2 0x100 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x120 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x140 ADD CALLDATALOAD PUSH2 0x1D1B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x683 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1E15 JUMP JUMPDEST PUSH2 0x73E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x70E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x1F6B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x77F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x7A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x221B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x800 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x817 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x241F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x836 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x84D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x8A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x242C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x8E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x2530 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x921 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x938 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x26BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x96E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x26C9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31B PUSH2 0x2931 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x9E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2955 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xACE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x2B01 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0xB30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0x2B2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x73E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0xC0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x2C42 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xC04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xC5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2D89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0xC9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0x302A JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0xD3B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xD72 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xDDD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50656761737973526F757465723A20494E56414C49445F504154480000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 CALLVALUE SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE51 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0xEE8 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xEB6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 DUP11 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xED3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3138 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF4C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xF6A JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP7 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0xF7C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFF5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x100B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP10 DUP2 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP10 DUP3 MSTORE SWAP3 SWAP4 POP PUSH2 0x104D SWAP3 SWAP1 SWAP2 DUP11 SWAP2 DUP11 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3210 SWAP2 POP POP JUMP JUMPDEST DUP8 PUSH2 0x10FF DUP3 DUP10 DUP10 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x1062 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x354D AND JUMP JUMPDEST LT ISZERO PUSH2 0x113C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x472C PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1198 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x11C7 DUP10 PUSH32 0x0 DUP11 DUP11 DUP11 ADDRESS DUP11 PUSH2 0x26C9 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x11D7 DUP10 DUP7 DUP6 PUSH2 0x35A5 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x123D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1251 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x125F DUP6 DUP4 PUSH2 0x373D JUMP JUMPDEST POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1278 DUP5 DUP5 DUP5 PUSH2 0x3830 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x12F5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x132C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1397 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50656761737973526F757465723A20494E56414C49445F504154480000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13F5 PUSH32 0x0 DUP9 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3920 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP CALLVALUE DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1405 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x144A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4779 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1486 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0x1532 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xEB6 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x153F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x15C8 JUMPI INVALID JUMPDEST PUSH2 0x1607 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3A6D SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1614 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0x1643 JUMPI PUSH2 0x1643 CALLER DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1634 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE SUB PUSH2 0x373D JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x169E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP7 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x16D8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1743 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50656761737973526F757465723A20494E56414C49445F504154480000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x17A1 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3920 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x17B1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x17F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4779 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x187F DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1806 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH2 0x1865 PUSH32 0x0 DUP11 DUP11 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1848 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 DUP12 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xED3 JUMPI INVALID JUMPDEST DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1872 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3CA6 JUMP JUMPDEST PUSH2 0x18BE DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x3A6D SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x18FD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x193B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x194F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1974 DUP5 DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1967 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x373D JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x19AC PUSH32 0x0 DUP5 DUP5 PUSH2 0x3920 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1A06 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1A3D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1AA8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50656761737973526F757465723A20494E56414C49445F504154480000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B06 PUSH32 0x0 CALLVALUE DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3E18 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1B19 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x1B5E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x472C PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1B9A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BE1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0x1C46 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xEB6 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1C53 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CBE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1CDC JUMPI INVALID JUMPDEST PUSH2 0x1643 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3A6D SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1D4B PUSH32 0x0 DUP16 DUP16 PUSH2 0x3138 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x1D5A JUMPI DUP13 PUSH2 0x1D5E JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1DE8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1DFB DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 PUSH2 0x26C9 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP POP POP SWAP12 POP SWAP12 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1E66 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1EC4 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3E18 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1ED7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x1F1C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x472C PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F2C DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1806 JUMPI INVALID JUMPDEST PUSH2 0x1974 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3A6D SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1FBF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1FED DUP11 PUSH32 0x0 DUP12 CALLVALUE DUP13 DUP13 PUSH2 0x3F4F JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x203F PUSH32 0x0 DUP13 PUSH32 0x0 PUSH2 0x3138 JUMP JUMPDEST SWAP1 POP PUSH2 0x204D DUP12 CALLER DUP4 DUP9 PUSH2 0x3CA6 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP3 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2155 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x216B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2173 JUMPI INVALID JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP CALLVALUE DUP5 LT ISZERO PUSH2 0x220D JUMPI PUSH2 0x220D CALLER DUP6 CALLVALUE SUB PUSH2 0x373D JUMP JUMPDEST POP POP SWAP7 POP SWAP7 POP SWAP7 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x226A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x22C2 DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x227A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH2 0x22BC PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xEB6 JUMPI INVALID JUMPDEST DUP11 PUSH2 0x3CA6 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP6 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x22D4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x234D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2363 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP9 DUP2 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE SWAP3 SWAP4 POP PUSH2 0x23A5 SWAP3 SWAP1 SWAP2 DUP10 SWAP2 DUP10 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 SWAP3 POP PUSH2 0x3210 SWAP2 POP POP JUMP JUMPDEST DUP7 PUSH2 0x10FF DUP3 DUP9 DUP9 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x23BA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1278 DUP5 DUP5 DUP5 PUSH2 0x41F5 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x247D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x24DB PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3920 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x24EB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1F1C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4779 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2581 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x25B0 DUP9 PUSH32 0x0 DUP10 DUP10 DUP10 ADDRESS DUP10 PUSH2 0x26C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH2 0x2634 SWAP3 POP DUP11 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2603 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2617 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x35A5 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x269A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1974 DUP5 DUP4 PUSH2 0x373D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1278 DUP5 DUP5 DUP5 PUSH2 0x42E5 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x271B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2748 PUSH32 0x0 DUP13 DUP13 PUSH2 0x3138 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x27B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x89AFCB4400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 DUP7 AND SWAP3 PUSH4 0x89AFCB44 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2833 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2847 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x285D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x2877 DUP15 DUP15 PUSH2 0x4391 JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x289A JUMPI DUP2 DUP4 PUSH2 0x289D JUMP JUMPDEST DUP3 DUP3 JUMPDEST SWAP1 SWAP8 POP SWAP6 POP DUP11 DUP8 LT ISZERO PUSH2 0x28E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x462B PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 DUP7 LT ISZERO PUSH2 0x2920 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x46E5 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x29A6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP7 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x29E0 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2A4B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50656761737973526F757465723A20494E56414C49445F504154480000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2AA9 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3E18 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x2ABC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x17F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x472C PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH2 0x19AC PUSH32 0x0 DUP5 DUP5 PUSH2 0x3E18 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2B7E PUSH32 0x0 DUP15 PUSH32 0x0 PUSH2 0x3138 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x2B8D JUMPI DUP13 PUSH2 0x2B91 JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C1B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x2C2D DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0x1146 JUMP JUMPDEST SWAP1 SWAP16 SWAP1 SWAP15 POP SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2C96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2CA4 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x3F4F JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x2CD6 PUSH32 0x0 DUP15 DUP15 PUSH2 0x3138 JUMP JUMPDEST SWAP1 POP PUSH2 0x2CE4 DUP14 CALLER DUP4 DUP9 PUSH2 0x3CA6 JUMP JUMPDEST PUSH2 0x2CF0 DUP13 CALLER DUP4 DUP8 PUSH2 0x3CA6 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP14 SWAP4 SWAP13 POP SWAP4 SWAP11 POP SWAP2 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2DD8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP6 DUP6 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x2E12 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2E7D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50656761737973526F757465723A20494E56414C49445F504154480000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2E8D DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x227A JUMPI INVALID JUMPDEST PUSH2 0x2ECB DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x3210 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP7 DUP2 LT ISZERO PUSH2 0x2FA2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x472C PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3008 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x301C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x113C DUP5 DUP3 PUSH2 0x373D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3078 PUSH32 0x0 DUP14 PUSH32 0x0 PUSH2 0x3138 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH2 0x3087 JUMPI DUP12 PUSH2 0x308B JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3101 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3115 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3127 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 PUSH2 0x2530 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3147 DUP6 DUP6 PUSH2 0x4391 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x85C9B07C539B322C33DA730D88DF8396983C35A411DA73D3D6C2278474890833 PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x3548 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x322E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3245 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x325D DUP4 DUP4 PUSH2 0x4391 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH2 0x328D PUSH32 0x0 DUP6 DUP6 PUSH2 0x3138 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x32E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x32F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP1 DUP10 AND EQ PUSH2 0x3335 JUMPI DUP3 DUP5 PUSH2 0x3338 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3396 DUP3 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP6 POP PUSH2 0x33A3 DUP7 DUP4 DUP4 PUSH2 0x3830 JUMP JUMPDEST SWAP5 POP POP POP POP POP PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x33CD JUMPI DUP3 PUSH1 0x0 PUSH2 0x33D1 JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP13 MLOAD SUB DUP11 LT PUSH2 0x33E8 JUMPI DUP11 PUSH2 0x3429 JUMP JUMPDEST PUSH2 0x3429 PUSH32 0x0 DUP10 DUP15 DUP14 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x341C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3138 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH32 0x22C0D9F00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP8 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x80 PUSH1 0x84 DUP6 ADD SWAP1 DUP2 MSTORE DUP5 MLOAD PUSH1 0xA4 DUP7 ADD DUP2 SWAP1 MSTORE SWAP7 SWAP8 POP SWAP1 DUP13 AND SWAP6 PUSH4 0x22C0D9F SWAP6 DUP11 SWAP6 DUP11 SWAP6 DUP11 SWAP6 SWAP2 SWAP5 SWAP2 SWAP4 SWAP2 SWAP3 PUSH1 0xC4 DUP7 ADD SWAP3 SWAP1 SWAP2 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x34CC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x34B4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x34F9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x351B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x352F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP12 ADD SWAP11 POP PUSH2 0x3213 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x19AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3650 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3631 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x36B2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x36B7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x36E5 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x36E5 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x36E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x3736 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F4641494C454400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3789 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x376A JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x37EB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x37F0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x3548 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4709 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x3870 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4602 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x3880 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x38BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4672 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x38CF DUP6 PUSH2 0x3E5 PUSH4 0xFFFFFFFF PUSH2 0x446F AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x38E3 DUP3 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x446F AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3909 DUP4 PUSH2 0x38FD DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x446F AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x44DB AND JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x3914 JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x3979 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x506567617379734C6962726172793A20494E56414C49445F5041544800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x39BB JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x39CF JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 MLOAD PUSH1 0x0 NOT ADD JUMPDEST DUP1 ISZERO PUSH2 0x3A65 JUMPI PUSH1 0x0 DUP1 PUSH2 0x3A1E DUP8 DUP7 PUSH1 0x1 DUP7 SUB DUP2 MLOAD DUP2 LT PUSH2 0x39FD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x3A11 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x4533 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3A40 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x3A31 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x41F5 JUMP JUMPDEST DUP5 PUSH1 0x1 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x3A4F JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x0 NOT ADD PUSH2 0x39E1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x3CA0 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3A8B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3AA2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x3ABA DUP4 DUP4 PUSH2 0x4391 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP8 DUP6 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3ACE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3AFC JUMPI DUP3 PUSH1 0x0 PUSH2 0x3B00 JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP11 MLOAD SUB DUP9 LT PUSH2 0x3B17 JUMPI DUP9 PUSH2 0x3B4B JUMP JUMPDEST PUSH2 0x3B4B PUSH32 0x0 DUP8 DUP13 DUP12 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x341C JUMPI INVALID JUMPDEST SWAP1 POP PUSH2 0x3B78 PUSH32 0x0 DUP9 DUP9 PUSH2 0x3138 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x22C0D9F DUP5 DUP5 DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3BB5 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3C26 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3C0E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3C53 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3C89 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP10 ADD SWAP9 POP PUSH2 0x3A70 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3D40 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3D21 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3DA2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3DA7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3DD5 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3DD5 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3DD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x3E10 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4755 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x3E71 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x506567617379734C6962726172793A20494E56414C49445F5041544800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3E89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3EB3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3EC4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x3A65 JUMPI PUSH1 0x0 DUP1 PUSH2 0x3F09 DUP8 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x3EF2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3A11 JUMPI INVALID JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3F2B DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x3F1C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x3830 JUMP JUMPDEST DUP5 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3F3A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x3ED3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xE6A4390500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xE6A43905 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3FF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x400C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x40D8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0xC9C6539600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xC9C65396 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x40BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x40D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4106 PUSH32 0x0 DUP12 DUP12 PUSH2 0x4533 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ DUP1 ISZERO PUSH2 0x4118 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x4128 JUMPI DUP8 SWAP4 POP DUP7 SWAP3 POP PUSH2 0x41E8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4135 DUP10 DUP5 DUP5 PUSH2 0x42E5 JUMP JUMPDEST SWAP1 POP DUP8 DUP2 GT PUSH2 0x4188 JUMPI DUP6 DUP2 LT ISZERO PUSH2 0x417D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x46E5 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 SWAP5 POP SWAP3 POP DUP3 PUSH2 0x41E6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4195 DUP10 DUP5 DUP7 PUSH2 0x42E5 JUMP JUMPDEST SWAP1 POP DUP10 DUP2 GT ISZERO PUSH2 0x41A1 JUMPI INVALID JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x41E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x462B PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 POP DUP8 SWAP4 POP JUMPDEST POP JUMPDEST POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x4235 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x46BB PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x4245 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x4280 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4672 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x42A4 PUSH2 0x3E8 PUSH2 0x4298 DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x446F AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x446F AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x42BE PUSH2 0x3E5 PUSH2 0x4298 DUP7 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x354D AND JUMP JUMPDEST SWAP1 POP PUSH2 0x42DB PUSH1 0x1 DUP3 DUP5 DUP2 PUSH2 0x42CE JUMPI INVALID JUMPDEST DIV SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x44DB AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x4325 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x464F PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x4335 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x4370 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4672 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x4381 DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x446F AND JUMP JUMPDEST DUP2 PUSH2 0x4388 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x43E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4698 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x4405 JUMPI DUP3 DUP5 PUSH2 0x4408 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4468 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x506567617379734C6962726172793A205A45524F5F4144445245535300000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x448A JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x4487 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x19AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x19AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4542 DUP6 DUP6 PUSH2 0x4391 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x4553 DUP9 DUP9 DUP9 PUSH2 0x3138 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x458B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x459F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x45B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x45EF JUMPI DUP1 DUP3 PUSH2 0x45F2 JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP INVALID POP PUSH6 0x67617379734C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD POP PUSH6 0x676173797352 PUSH16 0x757465723A20494E5355464649434945 0x4E SLOAD 0x5F COINBASE 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD POP PUSH6 0x67617379734C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD POP PUSH6 0x67617379734C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE POP PUSH6 0x67617379734C PUSH10 0x62726172793A20494445 0x4E SLOAD 0x49 NUMBER COINBASE 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 POP PUSH6 0x67617379734C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD POP PUSH6 0x676173797352 PUSH16 0x757465723A20494E5355464649434945 0x4E SLOAD 0x5F TIMESTAMP 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SLOAD PUSH19 0x616E7366657248656C7065723A205359535F54 MSTORE COINBASE 0x4E MSTORE8 CHAINID GASLIMIT MSTORE 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY POP PUSH6 0x676173797352 PUSH16 0x757465723A20494E5355464649434945 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SLOAD PUSH19 0x616E7366657248656C7065723A205452414E53 CHAINID GASLIMIT MSTORE 0x5F CHAINID MSTORE 0x4F 0x4D 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY POP PUSH6 0x676173797352 PUSH16 0x757465723A204558434553534956455F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x26 0x2D 0x48 0xAC ISZERO LT 0x22 0xC 0x49 SWAP16 DUP14 0xEF 0xEA PUSH31 0x2BC64989A1ECA0B97396ED3384B6A8127A5564736F6C634300060600330000 ",
              "sourceMap": "323:21093:3:-:0;;;625:109;5:9:-1;2:2;;;27:1;24;17:12;2:2;625:109:3;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;625:109:3;;;;;;;-1:-1:-1;;;;;;687:18:3;;;;;;;;715:12;;;;;323:21093;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {
                "481": [
                  {
                    "length": 32,
                    "start": 3722
                  },
                  {
                    "length": 32,
                    "start": 5020
                  },
                  {
                    "length": 32,
                    "start": 5382
                  },
                  {
                    "length": 32,
                    "start": 5960
                  },
                  {
                    "length": 32,
                    "start": 6172
                  },
                  {
                    "length": 32,
                    "start": 6534
                  },
                  {
                    "length": 32,
                    "start": 6829
                  },
                  {
                    "length": 32,
                    "start": 7194
                  },
                  {
                    "length": 32,
                    "start": 7461
                  },
                  {
                    "length": 32,
                    "start": 7787
                  },
                  {
                    "length": 32,
                    "start": 8185
                  },
                  {
                    "length": 32,
                    "start": 8848
                  },
                  {
                    "length": 32,
                    "start": 9346
                  },
                  {
                    "length": 32,
                    "start": 10018
                  },
                  {
                    "length": 32,
                    "start": 10547
                  },
                  {
                    "length": 32,
                    "start": 10832
                  },
                  {
                    "length": 32,
                    "start": 11016
                  },
                  {
                    "length": 32,
                    "start": 11064
                  },
                  {
                    "length": 32,
                    "start": 11440
                  },
                  {
                    "length": 32,
                    "start": 12338
                  },
                  {
                    "length": 32,
                    "start": 12903
                  },
                  {
                    "length": 32,
                    "start": 13293
                  },
                  {
                    "length": 32,
                    "start": 15132
                  },
                  {
                    "length": 32,
                    "start": 15186
                  },
                  {
                    "length": 32,
                    "start": 16281
                  },
                  {
                    "length": 32,
                    "start": 16480
                  },
                  {
                    "length": 32,
                    "start": 16608
                  }
                ],
                "484": [
                  {
                    "length": 32,
                    "start": 414
                  },
                  {
                    "length": 32,
                    "start": 3389
                  },
                  {
                    "length": 32,
                    "start": 3556
                  },
                  {
                    "length": 32,
                    "start": 3672
                  },
                  {
                    "length": 32,
                    "start": 4510
                  },
                  {
                    "length": 32,
                    "start": 4569
                  },
                  {
                    "length": 32,
                    "start": 4738
                  },
                  {
                    "length": 32,
                    "start": 4855
                  },
                  {
                    "length": 32,
                    "start": 5196
                  },
                  {
                    "length": 32,
                    "start": 5332
                  },
                  {
                    "length": 32,
                    "start": 5800
                  },
                  {
                    "length": 32,
                    "start": 6336
                  },
                  {
                    "length": 32,
                    "start": 6664
                  },
                  {
                    "length": 32,
                    "start": 7008
                  },
                  {
                    "length": 32,
                    "start": 7144
                  },
                  {
                    "length": 32,
                    "start": 8133
                  },
                  {
                    "length": 32,
                    "start": 8219
                  },
                  {
                    "length": 32,
                    "start": 8271
                  },
                  {
                    "length": 32,
                    "start": 8387
                  },
                  {
                    "length": 32,
                    "start": 9607
                  },
                  {
                    "length": 32,
                    "start": 9782
                  },
                  {
                    "length": 32,
                    "start": 10672
                  },
                  {
                    "length": 32,
                    "start": 11098
                  },
                  {
                    "length": 32,
                    "start": 11746
                  },
                  {
                    "length": 32,
                    "start": 12014
                  },
                  {
                    "length": 32,
                    "start": 12196
                  },
                  {
                    "length": 32,
                    "start": 12372
                  }
                ]
              },
              "linkReferences": {},
              "object": "60806040526004361061018e5760003560e01c806385f8c259116100d6578063c78c12cf1161007f578063e8e3370011610059578063e8e3370014610b7f578063ee8794c414610be1578063f1a730bd14610c79576101c7565b8063c78c12cf146109bd578063d06ca61f14610a55578063dfd9111b14610b0c576101c7565b8063ad615dec116100b0578063ad615dec14610915578063baa2abde1461094b578063c45a0155146109a8576101c7565b806385f8c259146107f45780638803dbee1461082a578063aab4c40b146108c2576101c7565b80631f00ca741161013857806338ed17391161011257806338ed1739146106605780633c7356d5146106f85780635c11d7951461075c576101c7565b80631f00ca74146104a55780631fef23891461055c5780632195995c146105e2576101c7565b806308b0b4351161016957806308b0b4351461030657806308e4e89e14610337578063181950fd1461040d576101c7565b8062121258146101cc578063016c841414610252578063054d50d4146102be576101c7565b366101c757336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101c557fe5b005b600080fd5b6101c5600480360360808110156101e257600080fd5b8135919081019060408101602082013564010000000081111561020457600080fd5b82018360208201111561021657600080fd5b8035906020019184602083028401116401000000008311171561023857600080fd5b91935091506001600160a01b038135169060200135610cec565b34801561025e57600080fd5b506102a5600480360360c081101561027557600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611146565b6040805192835260208301919091528051918290030190f35b3480156102ca57600080fd5b506102f4600480360360608110156102e157600080fd5b508035906020810135906040013561126b565b60408051918252519081900360200190f35b34801561031257600080fd5b5061031b611280565b604080516001600160a01b039092168252519081900360200190f35b6103bd6004803603608081101561034d57600080fd5b8135919081019060408101602082013564010000000081111561036f57600080fd5b82018360208201111561038157600080fd5b803590602001918460208302840111640100000000831117156103a357600080fd5b91935091506001600160a01b0381351690602001356112a4565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103f95781810151838201526020016103e1565b505050509050019250505060405180910390f35b34801561041957600080fd5b506103bd600480360360a081101561043057600080fd5b81359160208101359181019060608101604082013564010000000081111561045757600080fd5b82018360208201111561046957600080fd5b8035906020019184602083028401116401000000008311171561048b57600080fd5b91935091506001600160a01b03813516906020013561164d565b3480156104b157600080fd5b506103bd600480360360408110156104c857600080fd5b813591908101906040810160208201356401000000008111156104ea57600080fd5b8201836020820111156104fc57600080fd5b8035906020019184602083028401116401000000008311171561051e57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061197f945050505050565b6103bd6004803603608081101561057257600080fd5b8135919081019060408101602082013564010000000081111561059457600080fd5b8201836020820111156105a657600080fd5b803590602001918460208302840111640100000000831117156105c857600080fd5b91935091506001600160a01b0381351690602001356119b5565b3480156105ee57600080fd5b506102a5600480360361016081101561060657600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611d1b565b34801561066c57600080fd5b506103bd600480360360a081101561068357600080fd5b8135916020810135918101906060810160408201356401000000008111156106aa57600080fd5b8201836020820111156106bc57600080fd5b803590602001918460208302840111640100000000831117156106de57600080fd5b91935091506001600160a01b038135169060200135611e15565b61073e600480360360c081101561070e57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611f6b565b60408051938452602084019290925282820152519081900360600190f35b34801561076857600080fd5b506101c5600480360360a081101561077f57600080fd5b8135916020810135918101906060810160408201356401000000008111156107a657600080fd5b8201836020820111156107b857600080fd5b803590602001918460208302840111640100000000831117156107da57600080fd5b91935091506001600160a01b03813516906020013561221b565b34801561080057600080fd5b506102f46004803603606081101561081757600080fd5b508035906020810135906040013561241f565b34801561083657600080fd5b506103bd600480360360a081101561084d57600080fd5b81359160208101359181019060608101604082013564010000000081111561087457600080fd5b82018360208201111561088657600080fd5b803590602001918460208302840111640100000000831117156108a857600080fd5b91935091506001600160a01b03813516906020013561242c565b3480156108ce57600080fd5b506102f4600480360360c08110156108e557600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612530565b34801561092157600080fd5b506102f46004803603606081101561093857600080fd5b50803590602081013590604001356126bc565b34801561095757600080fd5b506102a5600480360360e081101561096e57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c001356126c9565b3480156109b457600080fd5b5061031b612931565b3480156109c957600080fd5b506103bd600480360360a08110156109e057600080fd5b813591602081013591810190606081016040820135640100000000811115610a0757600080fd5b820183602082011115610a1957600080fd5b80359060200191846020830284011164010000000083111715610a3b57600080fd5b91935091506001600160a01b038135169060200135612955565b348015610a6157600080fd5b506103bd60048036036040811015610a7857600080fd5b81359190810190604081016020820135640100000000811115610a9a57600080fd5b820183602082011115610aac57600080fd5b80359060200191846020830284011164010000000083111715610ace57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612b01945050505050565b348015610b1857600080fd5b506102a56004803603610140811015610b3057600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135612b2e565b348015610b8b57600080fd5b5061073e6004803603610100811015610ba357600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135612c42565b348015610bed57600080fd5b506101c5600480360360a0811015610c0457600080fd5b813591602081013591810190606081016040820135640100000000811115610c2b57600080fd5b820183602082011115610c3d57600080fd5b80359060200191846020830284011164010000000083111715610c5f57600080fd5b91935091506001600160a01b038135169060200135612d89565b348015610c8557600080fd5b506102f46004803603610140811015610c9d57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e0820135169061010081013590610120013561302a565b8042811015610d3b576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031685856000818110610d7257fe5b905060200201356001600160a01b03166001600160a01b031614610ddd576040805162461bcd60e51b815260206004820152601b60248201527f50656761737973526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610e3d57600080fd5b505af1158015610e51573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb610ee87f000000000000000000000000000000000000000000000000000000000000000089896000818110610eb657fe5b905060200201356001600160a01b03168a8a6001818110610ed357fe5b905060200201356001600160a01b0316613138565b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610f3857600080fd5b505af1158015610f4c573d6000803e3d6000fd5b505050506040513d6020811015610f6257600080fd5b5051610f6a57fe5b600086866000198101818110610f7c57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610fe157600080fd5b505afa158015610ff5573d6000803e3d6000fd5b505050506040513d602081101561100b57600080fd5b5051604080516020898102828101820190935289825292935061104d9290918a918a918291850190849080828437600092019190915250899250613210915050565b876110ff828989600019810181811061106257fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156110c757600080fd5b505afa1580156110db573d6000803e3d6000fd5b505050506040513d60208110156110f157600080fd5b50519063ffffffff61354d16565b101561113c5760405162461bcd60e51b815260040180806020018281038252602981526020018061472c6029913960400191505060405180910390fd5b5050505050505050565b6000808242811015611198576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6111c7897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a6126c9565b90935091506111d78986856135a5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561123d57600080fd5b505af1158015611251573d6000803e3d6000fd5b5050505061125f858361373d565b50965096945050505050565b6000611278848484613830565b949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b606081428110156112f5576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168686600081811061132c57fe5b905060200201356001600160a01b03166001600160a01b031614611397576040805162461bcd60e51b815260206004820152601b60248201527f50656761737973526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b6113f57f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061392092505050565b9150348260008151811061140557fe5b6020026020010151111561144a5760405162461bcd60e51b81526004018080602001828103825260258152602001806147796025913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061148657fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156114b957600080fd5b505af11580156114cd573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6115327f000000000000000000000000000000000000000000000000000000000000000089896000818110610eb657fe5b8460008151811061153f57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561159657600080fd5b505af11580156115aa573d6000803e3d6000fd5b505050506040513d60208110156115c057600080fd5b50516115c857fe5b61160782878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613a6d915050565b8160008151811061161457fe5b602002602001015134111561164357611643338360008151811061163457fe5b6020026020010151340361373d565b5095945050505050565b6060814281101561169e576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868660001981018181106116d857fe5b905060200201356001600160a01b03166001600160a01b031614611743576040805162461bcd60e51b815260206004820152601b60248201527f50656761737973526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b6117a17f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061392092505050565b915086826000815181106117b157fe5b602002602001015111156117f65760405162461bcd60e51b81526004018080602001828103825260258152602001806147796025913960400191505060405180910390fd5b61187f8686600081811061180657fe5b905060200201356001600160a01b0316336118657f00000000000000000000000000000000000000000000000000000000000000008a8a600081811061184857fe5b905060200201356001600160a01b03168b8b6001818110610ed357fe5b8560008151811061187257fe5b6020026020010151613ca6565b6118be82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613a6d915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836001855103815181106118fd57fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561193b57600080fd5b505af115801561194f573d6000803e3d6000fd5b50505050611974848360018551038151811061196757fe5b602002602001015161373d565b509695505050505050565b60606119ac7f00000000000000000000000000000000000000000000000000000000000000008484613920565b90505b92915050565b60608142811015611a06576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110611a3d57fe5b905060200201356001600160a01b03166001600160a01b031614611aa8576040805162461bcd60e51b815260206004820152601b60248201527f50656761737973526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b611b067f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613e1892505050565b91508682600184510381518110611b1957fe5b60200260200101511015611b5e5760405162461bcd60e51b815260040180806020018281038252602981526020018061472c6029913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db083600081518110611b9a57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611bcd57600080fd5b505af1158015611be1573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb611c467f000000000000000000000000000000000000000000000000000000000000000089896000818110610eb657fe5b84600081518110611c5357fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611caa57600080fd5b505af1158015611cbe573d6000803e3d6000fd5b505050506040513d6020811015611cd457600080fd5b5051611cdc57fe5b61164382878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613a6d915050565b6000806000611d4b7f00000000000000000000000000000000000000000000000000000000000000008f8f613138565b9050600087611d5a578c611d5e565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015611dd457600080fd5b505af1158015611de8573d6000803e3d6000fd5b50505050611dfb8f8f8f8f8f8f8f6126c9565b809450819550505050509b509b9950505050505050505050565b60608142811015611e66576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b611ec47f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613e1892505050565b91508682600184510381518110611ed757fe5b60200260200101511015611f1c5760405162461bcd60e51b815260040180806020018281038252602981526020018061472c6029913960400191505060405180910390fd5b611f2c8686600081811061180657fe5b61197482878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613a6d915050565b60008060008342811015611fbf576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b611fed8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c613f4f565b9094509250600061203f7f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000613138565b905061204d8b338388613ca6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b1580156120a857600080fd5b505af11580156120bc573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561214157600080fd5b505af1158015612155573d6000803e3d6000fd5b505050506040513d602081101561216b57600080fd5b505161217357fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b1580156121cb57600080fd5b505af11580156121df573d6000803e3d6000fd5b505050506040513d60208110156121f557600080fd5b505192503484101561220d5761220d3385340361373d565b505096509650969350505050565b804281101561226a576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6122c28585600081811061227a57fe5b905060200201356001600160a01b0316336122bc7f000000000000000000000000000000000000000000000000000000000000000089896000818110610eb657fe5b8a613ca6565b6000858560001981018181106122d457fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561233957600080fd5b505afa15801561234d573d6000803e3d6000fd5b505050506040513d602081101561236357600080fd5b505160408051602088810282810182019093528882529293506123a5929091899189918291850190849080828437600092019190915250889250613210915050565b866110ff82888860001981018181106123ba57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156110c757600080fd5b60006112788484846141f5565b6060814281101561247d576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6124db7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061392092505050565b915086826000815181106124eb57fe5b60200260200101511115611f1c5760405162461bcd60e51b81526004018080602001828103825260258152602001806147796025913960400191505060405180910390fd5b60008142811015612581576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6125b0887f000000000000000000000000000000000000000000000000000000000000000089898930896126c9565b604080516370a0823160e01b8152306004820152905191945061263492508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561260357600080fd5b505afa158015612617573d6000803e3d6000fd5b505050506040513d602081101561262d57600080fd5b50516135a5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561269a57600080fd5b505af11580156126ae573d6000803e3d6000fd5b50505050611974848361373d565b60006112788484846142e5565b600080824281101561271b576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b60006127487f00000000000000000000000000000000000000000000000000000000000000008c8c613138565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b1580156127a357600080fd5b505af11580156127b7573d6000803e3d6000fd5b505050506040513d60208110156127cd57600080fd5b5050604080517f89afcb440000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561283357600080fd5b505af1158015612847573d6000803e3d6000fd5b505050506040513d604081101561285d57600080fd5b508051602090910151909250905060006128778e8e614391565b509050806001600160a01b03168e6001600160a01b03161461289a57818361289d565b82825b90975095508a8710156128e15760405162461bcd60e51b815260040180806020018281038252602481526020018061462b6024913960400191505060405180910390fd5b898610156129205760405162461bcd60e51b81526004018080602001828103825260248152602001806146e56024913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b606081428110156129a6576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868660001981018181106129e057fe5b905060200201356001600160a01b03166001600160a01b031614612a4b576040805162461bcd60e51b815260206004820152601b60248201527f50656761737973526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b612aa97f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613e1892505050565b91508682600184510381518110612abc57fe5b602002602001015110156117f65760405162461bcd60e51b815260040180806020018281038252602981526020018061472c6029913960400191505060405180910390fd5b60606119ac7f00000000000000000000000000000000000000000000000000000000000000008484613e18565b6000806000612b7e7f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000613138565b9050600087612b8d578c612b91565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015612c0757600080fd5b505af1158015612c1b573d6000803e3d6000fd5b50505050612c2d8e8e8e8e8e8e611146565b909f909e509c50505050505050505050505050565b60008060008342811015612c96576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b612ca48c8c8c8c8c8c613f4f565b90945092506000612cd67f00000000000000000000000000000000000000000000000000000000000000008e8e613138565b9050612ce48d338388613ca6565b612cf08c338387613ca6565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015612d4857600080fd5b505af1158015612d5c573d6000803e3d6000fd5b505050506040513d6020811015612d7257600080fd5b5051949d939c50939a509198505050505050505050565b8042811015612dd8576040805162461bcd60e51b8152602060048201526016602482015275141959d85cde5cd49bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001685856000198101818110612e1257fe5b905060200201356001600160a01b03166001600160a01b031614612e7d576040805162461bcd60e51b815260206004820152601b60248201527f50656761737973526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b612e8d8585600081811061227a57fe5b612ecb858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613210915050565b604080516370a0823160e01b815230600482015290516000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015612f3557600080fd5b505afa158015612f49573d6000803e3d6000fd5b505050506040513d6020811015612f5f57600080fd5b5051905086811015612fa25760405162461bcd60e51b815260040180806020018281038252602981526020018061472c6029913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561300857600080fd5b505af115801561301c573d6000803e3d6000fd5b5050505061113c848261373d565b6000806130787f00000000000000000000000000000000000000000000000000000000000000008d7f0000000000000000000000000000000000000000000000000000000000000000613138565b9050600086613087578b61308b565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561310157600080fd5b505af1158015613115573d6000803e3d6000fd5b505050506131278d8d8d8d8d8d612530565b9d9c50505050505050505050505050565b60008060006131478585614391565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f85c9b07c539b322c33da730d88df8396983c35a411da73d3d6c2278474890833609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b60005b60018351038110156135485760008084838151811061322e57fe5b602002602001015185846001018151811061324557fe5b602002602001015191509150600061325d8383614391565b509050600061328d7f00000000000000000000000000000000000000000000000000000000000000008585613138565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156132ce57600080fd5b505afa1580156132e2573d6000803e3d6000fd5b505050506040513d60608110156132f857600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a811690891614613335578284613338565b83835b91509150613396828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156110c757600080fd5b95506133a3868383613830565b945050505050600080856001600160a01b0316886001600160a01b0316146133cd578260006133d1565b6000835b91509150600060028c51038a106133e8578a613429565b6134297f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061341c57fe5b6020026020010151613138565b60408051600080825260208201928390527f022c0d9f00000000000000000000000000000000000000000000000000000000835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b838110156134cc5781810151838201526020016134b4565b50505050905090810190601f1680156134f95780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561351b57600080fd5b505af115801561352f573d6000803e3d6000fd5b50506001909b019a506132139950505050505050505050565b505050565b808203828111156119af576040805162461bcd60e51b815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b602083106136505780518252601f199092019160209182019101613631565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146136b2576040519150601f19603f3d011682016040523d82523d6000602084013e6136b7565b606091505b50915091508180156136e55750805115806136e557508080602001905160208110156136e257600080fd5b50515b613736576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106137895780518252601f19909201916020918201910161376a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146137eb576040519150601f19603f3d011682016040523d82523d6000602084013e6137f0565b606091505b50509050806135485760405162461bcd60e51b81526004018080602001828103825260238152602001806147096023913960400191505060405180910390fd5b60008084116138705760405162461bcd60e51b81526004018080602001828103825260298152602001806146026029913960400191505060405180910390fd5b6000831180156138805750600082115b6138bb5760405162461bcd60e51b81526004018080602001828103825260268152602001806146726026913960400191505060405180910390fd5b60006138cf856103e563ffffffff61446f16565b905060006138e3828563ffffffff61446f16565b90506000613909836138fd886103e863ffffffff61446f16565b9063ffffffff6144db16565b905080828161391457fe5b04979650505050505050565b6060600282511015613979576040805162461bcd60e51b815260206004820152601c60248201527f506567617379734c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561399157600080fd5b506040519080825280602002602001820160405280156139bb578160200160208202803683370190505b50905082816001835103815181106139cf57fe5b60209081029190910101528151600019015b8015613a6557600080613a1e878660018603815181106139fd57fe5b6020026020010151878681518110613a1157fe5b6020026020010151614533565b91509150613a40848481518110613a3157fe5b602002602001015183836141f5565b846001850381518110613a4f57fe5b60209081029190910101525050600019016139e1565b509392505050565b60005b6001835103811015613ca057600080848381518110613a8b57fe5b6020026020010151858460010181518110613aa257fe5b6020026020010151915091506000613aba8383614391565b5090506000878560010181518110613ace57fe5b60200260200101519050600080836001600160a01b0316866001600160a01b031614613afc57826000613b00565b6000835b91509150600060028a51038810613b175788613b4b565b613b4b7f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061341c57fe5b9050613b787f00000000000000000000000000000000000000000000000000000000000000008888613138565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015613bb5576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613c26578181015183820152602001613c0e565b50505050905090810190601f168015613c535780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015613c7557600080fd5b505af1158015613c89573d6000803e3d6000fd5b505060019099019850613a70975050505050505050565b50505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b17815292518251600094606094938a169392918291908083835b60208310613d405780518252601f199092019160209182019101613d21565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613da2576040519150601f19603f3d011682016040523d82523d6000602084013e613da7565b606091505b5091509150818015613dd5575080511580613dd55750808060200190516020811015613dd257600080fd5b50515b613e105760405162461bcd60e51b81526004018080602001828103825260248152602001806147556024913960400191505060405180910390fd5b505050505050565b6060600282511015613e71576040805162461bcd60e51b815260206004820152601c60248201527f506567617379734c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613e8957600080fd5b50604051908082528060200260200182016040528015613eb3578160200160208202803683370190505b5090508281600081518110613ec457fe5b60200260200101818152505060005b6001835103811015613a6557600080613f0987868581518110613ef257fe5b6020026020010151878660010181518110613a1157fe5b91509150613f2b848481518110613f1c57fe5b60200260200101518383613830565b848460010181518110613f3a57fe5b60209081029190910101525050600101613ed3565b604080517fe6a439050000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015613fe257600080fd5b505afa158015613ff6573d6000803e3d6000fd5b505050506040513d602081101561400c57600080fd5b50516001600160a01b031614156140d857604080517fc9c653960000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b1580156140ab57600080fd5b505af11580156140bf573d6000803e3d6000fd5b505050506040513d60208110156140d557600080fd5b50505b6000806141067f00000000000000000000000000000000000000000000000000000000000000008b8b614533565b91509150816000148015614118575080155b15614128578793508692506141e8565b60006141358984846142e5565b9050878111614188578581101561417d5760405162461bcd60e51b81526004018080602001828103825260248152602001806146e56024913960400191505060405180910390fd5b8894509250826141e6565b60006141958984866142e5565b9050898111156141a157fe5b878110156141e05760405162461bcd60e51b815260040180806020018281038252602481526020018061462b6024913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b60008084116142355760405162461bcd60e51b815260040180806020018281038252602a8152602001806146bb602a913960400191505060405180910390fd5b6000831180156142455750600082115b6142805760405162461bcd60e51b81526004018080602001828103825260268152602001806146726026913960400191505060405180910390fd5b60006142a46103e8614298868863ffffffff61446f16565b9063ffffffff61446f16565b905060006142be6103e5614298868963ffffffff61354d16565b90506142db60018284816142ce57fe5b049063ffffffff6144db16565b9695505050505050565b60008084116143255760405162461bcd60e51b815260040180806020018281038252602381526020018061464f6023913960400191505060405180910390fd5b6000831180156143355750600082115b6143705760405162461bcd60e51b81526004018080602001828103825260268152602001806146726026913960400191505060405180910390fd5b82614381858463ffffffff61446f16565b8161438857fe5b04949350505050565b600080826001600160a01b0316846001600160a01b031614156143e55760405162461bcd60e51b81526004018080602001828103825260238152602001806146986023913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610614405578284614408565b83835b90925090506001600160a01b038216614468576040805162461bcd60e51b815260206004820152601c60248201527f506567617379734c6962726172793a205a45524f5f4144445245535300000000604482015290519081900360640190fd5b9250929050565b600081158061448a5750508082028282828161448757fe5b04145b6119af576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b808201828110156119af576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006145428585614391565b509050600080614553888888613138565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561458b57600080fd5b505afa15801561459f573d6000803e3d6000fd5b505050506040513d60608110156145b557600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b03878116908416146145ef5780826145f2565b81815b9099909850965050505050505056fe506567617379734c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e5450656761737973526f757465723a20494e53554646494349454e545f415f414d4f554e54506567617379734c6962726172793a20494e53554646494349454e545f414d4f554e54506567617379734c6962726172793a20494e53554646494349454e545f4c4951554944495459506567617379734c6962726172793a204944454e544943414c5f414444524553534553506567617379734c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5450656761737973526f757465723a20494e53554646494349454e545f425f414d4f554e545472616e7366657248656c7065723a205359535f5452414e534645525f4641494c454450656761737973526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c454450656761737973526f757465723a204558434553534956455f494e5055545f414d4f554e54a2646970667358221220262d48ac1510220c499f8defea7e2bc64989a1eca0b97396ed3384b6a8127a5564736f6c63430006060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x85F8C259 GT PUSH2 0xD6 JUMPI DUP1 PUSH4 0xC78C12CF GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xE8E33700 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE8E33700 EQ PUSH2 0xB7F JUMPI DUP1 PUSH4 0xEE8794C4 EQ PUSH2 0xBE1 JUMPI DUP1 PUSH4 0xF1A730BD EQ PUSH2 0xC79 JUMPI PUSH2 0x1C7 JUMP JUMPDEST DUP1 PUSH4 0xC78C12CF EQ PUSH2 0x9BD JUMPI DUP1 PUSH4 0xD06CA61F EQ PUSH2 0xA55 JUMPI DUP1 PUSH4 0xDFD9111B EQ PUSH2 0xB0C JUMPI PUSH2 0x1C7 JUMP JUMPDEST DUP1 PUSH4 0xAD615DEC GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0xAD615DEC EQ PUSH2 0x915 JUMPI DUP1 PUSH4 0xBAA2ABDE EQ PUSH2 0x94B JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x9A8 JUMPI PUSH2 0x1C7 JUMP JUMPDEST DUP1 PUSH4 0x85F8C259 EQ PUSH2 0x7F4 JUMPI DUP1 PUSH4 0x8803DBEE EQ PUSH2 0x82A JUMPI DUP1 PUSH4 0xAAB4C40B EQ PUSH2 0x8C2 JUMPI PUSH2 0x1C7 JUMP JUMPDEST DUP1 PUSH4 0x1F00CA74 GT PUSH2 0x138 JUMPI DUP1 PUSH4 0x38ED1739 GT PUSH2 0x112 JUMPI DUP1 PUSH4 0x38ED1739 EQ PUSH2 0x660 JUMPI DUP1 PUSH4 0x3C7356D5 EQ PUSH2 0x6F8 JUMPI DUP1 PUSH4 0x5C11D795 EQ PUSH2 0x75C JUMPI PUSH2 0x1C7 JUMP JUMPDEST DUP1 PUSH4 0x1F00CA74 EQ PUSH2 0x4A5 JUMPI DUP1 PUSH4 0x1FEF2389 EQ PUSH2 0x55C JUMPI DUP1 PUSH4 0x2195995C EQ PUSH2 0x5E2 JUMPI PUSH2 0x1C7 JUMP JUMPDEST DUP1 PUSH4 0x8B0B435 GT PUSH2 0x169 JUMPI DUP1 PUSH4 0x8B0B435 EQ PUSH2 0x306 JUMPI DUP1 PUSH4 0x8E4E89E EQ PUSH2 0x337 JUMPI DUP1 PUSH4 0x181950FD EQ PUSH2 0x40D JUMPI PUSH2 0x1C7 JUMP JUMPDEST DUP1 PUSH3 0x121258 EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x16C8414 EQ PUSH2 0x252 JUMPI DUP1 PUSH4 0x54D50D4 EQ PUSH2 0x2BE JUMPI PUSH2 0x1C7 JUMP JUMPDEST CALLDATASIZE PUSH2 0x1C7 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x1C5 JUMPI INVALID JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xCEC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x1146 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x126B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31B PUSH2 0x1280 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x3BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x34D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x36F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x12A4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3F9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3E1 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x419 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x469 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x48B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x164D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x51E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x197F SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x572 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x594 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x19B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x160 DUP2 LT ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH2 0x100 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x120 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x140 ADD CALLDATALOAD PUSH2 0x1D1B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x683 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1E15 JUMP JUMPDEST PUSH2 0x73E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x70E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x1F6B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x768 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x77F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x7A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x7B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x221B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x800 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x817 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x241F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x836 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x84D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x8A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x242C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x8E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x2530 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x921 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x938 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x26BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x96E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x26C9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31B PUSH2 0x2931 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x9E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2955 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xAAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xACE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x2B01 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0xB30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0x2B2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x73E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0xC0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x2C42 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xC04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xC5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2D89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0xC9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0x302A JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0xD3B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xD72 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xDDD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50656761737973526F757465723A20494E56414C49445F504154480000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 CALLVALUE SWAP1 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE51 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0xEE8 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xEB6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 DUP11 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xED3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3138 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF4C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xF6A JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP7 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0xF7C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xFF5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x100B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP10 DUP2 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP10 DUP3 MSTORE SWAP3 SWAP4 POP PUSH2 0x104D SWAP3 SWAP1 SWAP2 DUP11 SWAP2 DUP11 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3210 SWAP2 POP POP JUMP JUMPDEST DUP8 PUSH2 0x10FF DUP3 DUP10 DUP10 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x1062 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x354D AND JUMP JUMPDEST LT ISZERO PUSH2 0x113C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x472C PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1198 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x11C7 DUP10 PUSH32 0x0 DUP11 DUP11 DUP11 ADDRESS DUP11 PUSH2 0x26C9 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x11D7 DUP10 DUP7 DUP6 PUSH2 0x35A5 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x123D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1251 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x125F DUP6 DUP4 PUSH2 0x373D JUMP JUMPDEST POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1278 DUP5 DUP5 DUP5 PUSH2 0x3830 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x12F5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x132C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1397 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50656761737973526F757465723A20494E56414C49445F504154480000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13F5 PUSH32 0x0 DUP9 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3920 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP CALLVALUE DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1405 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x144A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4779 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1486 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0x1532 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xEB6 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x153F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x15C8 JUMPI INVALID JUMPDEST PUSH2 0x1607 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3A6D SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1614 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0x1643 JUMPI PUSH2 0x1643 CALLER DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1634 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE SUB PUSH2 0x373D JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x169E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP7 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x16D8 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1743 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50656761737973526F757465723A20494E56414C49445F504154480000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x17A1 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3920 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x17B1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x17F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4779 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x187F DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1806 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH2 0x1865 PUSH32 0x0 DUP11 DUP11 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1848 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 DUP12 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xED3 JUMPI INVALID JUMPDEST DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1872 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3CA6 JUMP JUMPDEST PUSH2 0x18BE DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x3A6D SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x18FD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x193B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x194F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1974 DUP5 DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1967 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x373D JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x19AC PUSH32 0x0 DUP5 DUP5 PUSH2 0x3920 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1A06 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1A3D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1AA8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50656761737973526F757465723A20494E56414C49445F504154480000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1B06 PUSH32 0x0 CALLVALUE DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3E18 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1B19 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x1B5E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x472C PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1B9A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BE1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0x1C46 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xEB6 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1C53 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CBE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1CD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1CDC JUMPI INVALID JUMPDEST PUSH2 0x1643 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3A6D SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1D4B PUSH32 0x0 DUP16 DUP16 PUSH2 0x3138 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x1D5A JUMPI DUP13 PUSH2 0x1D5E JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1DE8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1DFB DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 PUSH2 0x26C9 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP POP POP SWAP12 POP SWAP12 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1E66 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1EC4 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3E18 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1ED7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x1F1C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x472C PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F2C DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1806 JUMPI INVALID JUMPDEST PUSH2 0x1974 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3A6D SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1FBF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1FED DUP11 PUSH32 0x0 DUP12 CALLVALUE DUP13 DUP13 PUSH2 0x3F4F JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x203F PUSH32 0x0 DUP13 PUSH32 0x0 PUSH2 0x3138 JUMP JUMPDEST SWAP1 POP PUSH2 0x204D DUP12 CALLER DUP4 DUP9 PUSH2 0x3CA6 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP3 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2155 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x216B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2173 JUMPI INVALID JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP CALLVALUE DUP5 LT ISZERO PUSH2 0x220D JUMPI PUSH2 0x220D CALLER DUP6 CALLVALUE SUB PUSH2 0x373D JUMP JUMPDEST POP POP SWAP7 POP SWAP7 POP SWAP7 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x226A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x22C2 DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x227A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH2 0x22BC PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xEB6 JUMPI INVALID JUMPDEST DUP11 PUSH2 0x3CA6 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP6 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x22D4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x234D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2363 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP9 DUP2 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE SWAP3 SWAP4 POP PUSH2 0x23A5 SWAP3 SWAP1 SWAP2 DUP10 SWAP2 DUP10 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 SWAP3 POP PUSH2 0x3210 SWAP2 POP POP JUMP JUMPDEST DUP7 PUSH2 0x10FF DUP3 DUP9 DUP9 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x23BA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1278 DUP5 DUP5 DUP5 PUSH2 0x41F5 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x247D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x24DB PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3920 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x24EB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1F1C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4779 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2581 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x25B0 DUP9 PUSH32 0x0 DUP10 DUP10 DUP10 ADDRESS DUP10 PUSH2 0x26C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH2 0x2634 SWAP3 POP DUP11 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2603 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2617 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x35A5 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x269A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26AE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1974 DUP5 DUP4 PUSH2 0x373D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1278 DUP5 DUP5 DUP5 PUSH2 0x42E5 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x271B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2748 PUSH32 0x0 DUP13 DUP13 PUSH2 0x3138 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x27B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x89AFCB4400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 DUP7 AND SWAP3 PUSH4 0x89AFCB44 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2833 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2847 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x285D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x2877 DUP15 DUP15 PUSH2 0x4391 JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x289A JUMPI DUP2 DUP4 PUSH2 0x289D JUMP JUMPDEST DUP3 DUP3 JUMPDEST SWAP1 SWAP8 POP SWAP6 POP DUP11 DUP8 LT ISZERO PUSH2 0x28E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x462B PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 DUP7 LT ISZERO PUSH2 0x2920 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x46E5 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x29A6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP7 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x29E0 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2A4B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50656761737973526F757465723A20494E56414C49445F504154480000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2AA9 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3E18 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x2ABC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x17F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x472C PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH2 0x19AC PUSH32 0x0 DUP5 DUP5 PUSH2 0x3E18 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2B7E PUSH32 0x0 DUP15 PUSH32 0x0 PUSH2 0x3138 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x2B8D JUMPI DUP13 PUSH2 0x2B91 JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C1B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x2C2D DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0x1146 JUMP JUMPDEST SWAP1 SWAP16 SWAP1 SWAP15 POP SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2C96 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2CA4 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x3F4F JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x2CD6 PUSH32 0x0 DUP15 DUP15 PUSH2 0x3138 JUMP JUMPDEST SWAP1 POP PUSH2 0x2CE4 DUP14 CALLER DUP4 DUP9 PUSH2 0x3CA6 JUMP JUMPDEST PUSH2 0x2CF0 DUP13 CALLER DUP4 DUP8 PUSH2 0x3CA6 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP14 SWAP4 SWAP13 POP SWAP4 SWAP11 POP SWAP2 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2DD8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x141959D85CDE5CD49BDD5D195C8E8811561412549151 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP6 DUP6 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x2E12 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2E7D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50656761737973526F757465723A20494E56414C49445F504154480000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2E8D DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x227A JUMPI INVALID JUMPDEST PUSH2 0x2ECB DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x3210 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP7 DUP2 LT ISZERO PUSH2 0x2FA2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x472C PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3008 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x301C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x113C DUP5 DUP3 PUSH2 0x373D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3078 PUSH32 0x0 DUP14 PUSH32 0x0 PUSH2 0x3138 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH2 0x3087 JUMPI DUP12 PUSH2 0x308B JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3101 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3115 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3127 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 PUSH2 0x2530 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3147 DUP6 DUP6 PUSH2 0x4391 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x85C9B07C539B322C33DA730D88DF8396983C35A411DA73D3D6C2278474890833 PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x3548 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x322E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3245 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x325D DUP4 DUP4 PUSH2 0x4391 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH2 0x328D PUSH32 0x0 DUP6 DUP6 PUSH2 0x3138 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x32E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x32F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP1 DUP10 AND EQ PUSH2 0x3335 JUMPI DUP3 DUP5 PUSH2 0x3338 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3396 DUP3 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP6 POP PUSH2 0x33A3 DUP7 DUP4 DUP4 PUSH2 0x3830 JUMP JUMPDEST SWAP5 POP POP POP POP POP PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x33CD JUMPI DUP3 PUSH1 0x0 PUSH2 0x33D1 JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP13 MLOAD SUB DUP11 LT PUSH2 0x33E8 JUMPI DUP11 PUSH2 0x3429 JUMP JUMPDEST PUSH2 0x3429 PUSH32 0x0 DUP10 DUP15 DUP14 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x341C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3138 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH32 0x22C0D9F00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP8 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x80 PUSH1 0x84 DUP6 ADD SWAP1 DUP2 MSTORE DUP5 MLOAD PUSH1 0xA4 DUP7 ADD DUP2 SWAP1 MSTORE SWAP7 SWAP8 POP SWAP1 DUP13 AND SWAP6 PUSH4 0x22C0D9F SWAP6 DUP11 SWAP6 DUP11 SWAP6 DUP11 SWAP6 SWAP2 SWAP5 SWAP2 SWAP4 SWAP2 SWAP3 PUSH1 0xC4 DUP7 ADD SWAP3 SWAP1 SWAP2 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x34CC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x34B4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x34F9 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x351B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x352F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP12 ADD SWAP11 POP PUSH2 0x3213 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x19AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3650 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3631 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x36B2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x36B7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x36E5 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x36E5 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x36E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x3736 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F4641494C454400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3789 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x376A JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x37EB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x37F0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x3548 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4709 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x3870 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4602 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x3880 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x38BB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4672 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x38CF DUP6 PUSH2 0x3E5 PUSH4 0xFFFFFFFF PUSH2 0x446F AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x38E3 DUP3 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x446F AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3909 DUP4 PUSH2 0x38FD DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x446F AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x44DB AND JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x3914 JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x3979 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x506567617379734C6962726172793A20494E56414C49445F5041544800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3991 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x39BB JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x39CF JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 MLOAD PUSH1 0x0 NOT ADD JUMPDEST DUP1 ISZERO PUSH2 0x3A65 JUMPI PUSH1 0x0 DUP1 PUSH2 0x3A1E DUP8 DUP7 PUSH1 0x1 DUP7 SUB DUP2 MLOAD DUP2 LT PUSH2 0x39FD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x3A11 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x4533 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3A40 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x3A31 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x41F5 JUMP JUMPDEST DUP5 PUSH1 0x1 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x3A4F JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x0 NOT ADD PUSH2 0x39E1 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x3CA0 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3A8B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3AA2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x3ABA DUP4 DUP4 PUSH2 0x4391 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP8 DUP6 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3ACE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3AFC JUMPI DUP3 PUSH1 0x0 PUSH2 0x3B00 JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP11 MLOAD SUB DUP9 LT PUSH2 0x3B17 JUMPI DUP9 PUSH2 0x3B4B JUMP JUMPDEST PUSH2 0x3B4B PUSH32 0x0 DUP8 DUP13 DUP12 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x341C JUMPI INVALID JUMPDEST SWAP1 POP PUSH2 0x3B78 PUSH32 0x0 DUP9 DUP9 PUSH2 0x3138 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x22C0D9F DUP5 DUP5 DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3BB5 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3C26 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3C0E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3C53 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3C89 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP10 ADD SWAP9 POP PUSH2 0x3A70 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3D40 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3D21 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3DA2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3DA7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3DD5 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3DD5 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3DD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x3E10 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4755 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x3E71 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x506567617379734C6962726172793A20494E56414C49445F5041544800000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3E89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3EB3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3EC4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x3A65 JUMPI PUSH1 0x0 DUP1 PUSH2 0x3F09 DUP8 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x3EF2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3A11 JUMPI INVALID JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3F2B DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x3F1C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x3830 JUMP JUMPDEST DUP5 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3F3A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x3ED3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xE6A4390500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xE6A43905 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3FF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x400C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x40D8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0xC9C6539600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xC9C65396 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x40BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x40D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4106 PUSH32 0x0 DUP12 DUP12 PUSH2 0x4533 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ DUP1 ISZERO PUSH2 0x4118 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x4128 JUMPI DUP8 SWAP4 POP DUP7 SWAP3 POP PUSH2 0x41E8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4135 DUP10 DUP5 DUP5 PUSH2 0x42E5 JUMP JUMPDEST SWAP1 POP DUP8 DUP2 GT PUSH2 0x4188 JUMPI DUP6 DUP2 LT ISZERO PUSH2 0x417D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x46E5 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 SWAP5 POP SWAP3 POP DUP3 PUSH2 0x41E6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4195 DUP10 DUP5 DUP7 PUSH2 0x42E5 JUMP JUMPDEST SWAP1 POP DUP10 DUP2 GT ISZERO PUSH2 0x41A1 JUMPI INVALID JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x41E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x462B PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 POP DUP8 SWAP4 POP JUMPDEST POP JUMPDEST POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x4235 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x46BB PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x4245 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x4280 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4672 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x42A4 PUSH2 0x3E8 PUSH2 0x4298 DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x446F AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x446F AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x42BE PUSH2 0x3E5 PUSH2 0x4298 DUP7 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x354D AND JUMP JUMPDEST SWAP1 POP PUSH2 0x42DB PUSH1 0x1 DUP3 DUP5 DUP2 PUSH2 0x42CE JUMPI INVALID JUMPDEST DIV SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x44DB AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x4325 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x464F PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x4335 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x4370 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4672 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x4381 DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x446F AND JUMP JUMPDEST DUP2 PUSH2 0x4388 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x43E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4698 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x4405 JUMPI DUP3 DUP5 PUSH2 0x4408 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4468 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x506567617379734C6962726172793A205A45524F5F4144445245535300000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x448A JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x4487 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x19AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x19AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4542 DUP6 DUP6 PUSH2 0x4391 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x4553 DUP9 DUP9 DUP9 PUSH2 0x3138 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x458B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x459F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x45B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x45EF JUMPI DUP1 DUP3 PUSH2 0x45F2 JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP INVALID POP PUSH6 0x67617379734C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD POP PUSH6 0x676173797352 PUSH16 0x757465723A20494E5355464649434945 0x4E SLOAD 0x5F COINBASE 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD POP PUSH6 0x67617379734C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD POP PUSH6 0x67617379734C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE POP PUSH6 0x67617379734C PUSH10 0x62726172793A20494445 0x4E SLOAD 0x49 NUMBER COINBASE 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 POP PUSH6 0x67617379734C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD POP PUSH6 0x676173797352 PUSH16 0x757465723A20494E5355464649434945 0x4E SLOAD 0x5F TIMESTAMP 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SLOAD PUSH19 0x616E7366657248656C7065723A205359535F54 MSTORE COINBASE 0x4E MSTORE8 CHAINID GASLIMIT MSTORE 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY POP PUSH6 0x676173797352 PUSH16 0x757465723A20494E5355464649434945 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SLOAD PUSH19 0x616E7366657248656C7065723A205452414E53 CHAINID GASLIMIT MSTORE 0x5F CHAINID MSTORE 0x4F 0x4D 0x5F CHAINID COINBASE 0x49 0x4C GASLIMIT DIFFICULTY POP PUSH6 0x676173797352 PUSH16 0x757465723A204558434553534956455F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x26 0x2D 0x48 0xAC ISZERO LT 0x22 0xC 0x49 SWAP16 DUP14 0xEF 0xEA PUSH31 0x2BC64989A1ECA0B97396ED3384B6A8127A5564736F6C634300060600330000 ",
              "sourceMap": "323:21093:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:10;-1:-1:-1;;;;;798:4:3;784:18;;777:26;;;;323:21093;;12:1:-1;9;2:12;18384:874:3;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;18384:874:3;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;18384:874:3;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;18384:874:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;18384:874:3;;-1:-1:-1;18384:874:3;-1:-1:-1;;;;;;18384:874:3;;;;;;;;:::i;5564:715::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5564:715:3;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;5564:715:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20399:250;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20399:250:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20399:250:3;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;450:38;;5:9:-1;2:2;;;27:1;24;17:12;2:2;450:38:3;;;:::i;:::-;;;;-1:-1:-1;;;;;450:38:3;;;;;;;;;;;;;;15000:947;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;15000:947:3;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;15000:947:3;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;15000:947:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;15000:947:3;;-1:-1:-1;15000:947:3;-1:-1:-1;;;;;;15000:947:3;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15000:947:3;;;;;;;;;;;;;;;;;13102:932;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13102:932:3;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;13102:932:3;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;13102:932:3;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;13102:932:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;13102:932:3;;-1:-1:-1;13102:932:3;-1:-1:-1;;;;;;13102:932:3;;;;;;;;:::i;21165:249::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21165:249:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;21165:249:3;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;21165:249:3;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;21165:249:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;21165:249:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;21165:249:3;;-1:-1:-1;21165:249:3;;-1:-1:-1;;;;;21165:249:3:i;12272:824::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;12272:824:3;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;12272:824:3;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;12272:824:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;12272:824:3;;-1:-1:-1;12272:824:3;-1:-1:-1;;;;;;12272:824:3;;;;;;;;:::i;6285:895::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6285:895:3;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;6285:895:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10812:735::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10812:735:3;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;10812:735:3;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;10812:735:3;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;10812:735:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10812:735:3;;-1:-1:-1;10812:735:3;-1:-1:-1;;;;;;10812:735:3;;;;;;;;:::i;3510:1078::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;3510:1078:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;17620:758;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17620:758:3;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;17620:758:3;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;17620:758:3;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;17620:758:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;17620:758:3;;-1:-1:-1;17620:758:3;-1:-1:-1;;;;;;17620:758:3;;;;;;;;:::i;20655:249::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20655:249:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20655:249:3;;;;;;;;;;;;:::i;11553:713::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11553:713:3;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;11553:713:3;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;11553:713:3;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;11553:713:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11553:713:3;;-1:-1:-1;11553:713:3;-1:-1:-1;;;;;;11553:713:3;;;;;;;;:::i;8174:741::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8174:741:3;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;8174:741:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20167:226::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20167:226:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20167:226:3;;;;;;;;;;;;:::i;4628:930::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4628:930:3;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;4628:930:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;403:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;403:41:3;;;:::i;14040:954::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14040:954:3;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;14040:954:3;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;14040:954:3;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;14040:954:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;14040:954:3;;-1:-1:-1;14040:954:3;-1:-1:-1;;;;;;14040:954:3;;;;;;;;:::i;20910:249::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20910:249:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;20910:249:3;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;20910:249:3;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;20910:249:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;20910:249:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;20910:249:3;;-1:-1:-1;20910:249:3;;-1:-1:-1;;;;;20910:249:3:i;7186:912::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7186:912:3;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;7186:912:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2589:915::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2589:915:3;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;2589:915:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19264:862::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19264:862:3;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;19264:862:3;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;19264:862:3;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;19264:862:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;19264:862:3;;-1:-1:-1;19264:862:3;-1:-1:-1;;;;;;19264:862:3;;;;;;;;:::i;8921:898::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8921:898:3;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;8921:898:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18384:874::-;18600:8;559:15;547:8;:27;;539:62;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;;;;18639:4:::1;-1:-1:-1::0;;;;;18628:15:3::1;:4;;18633:1;18628:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;18628:7:3::1;-1:-1:-1::0;;;;;18628:15:3::1;;18620:55;;;::::0;;-1:-1:-1;;;18620:55:3;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;18685:16;18704:9;18685:28;;18729:4;-1:-1:-1::0;;;;;18723:19:3::1;;18750:8;18723:38;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;18723:38:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;18723:38:3;;;;;18797:4;-1:-1:-1::0;;;;;18791:20:3::1;;18829:49;18852:7;18861:4;;18866:1;18861:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;18861:7:3::1;18870:4;;18875:1;18870:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;18870:7:3::1;18829:22;:49::i;:::-;18896:8;18791:127;;;;;;;;;;;;;-1:-1:-1::0;;;;;18791:127:3::1;-1:-1:-1::0;;;;;18791:127:3::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;18791:127:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;18791:127:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;18791:127:3;18771:157:::1;;;;18938:21;18969:4:::0;;-1:-1:-1;;18974:15:3;;18969:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;18969:21:3::1;-1:-1:-1::0;;;;;18962:39:3::1;;19002:2;18962:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;18962:43:3::1;-1:-1:-1::0;;;;;18962:43:3::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;18962:43:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;18962:43:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;18962:43:3;19015:44:::1;::::0;;18962:43:::1;19015:44:::0;;::::1;::::0;;;;;;;;;;;18962:43;;-1:-1:-1;19015:44:3::1;::::0;;;19050:4;;;;;;19015:44;::::1;::::0;19050:4;;19015:44;19050:4;19015:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;19056:2:3;;-1:-1:-1;19015:34:3::1;::::0;-1:-1:-1;;19015:44:3:i:1;:::-;19172:12:::0;19090:62:::1;19138:13:::0;19097:4;;-1:-1:-1;;19102:15:3;;19097:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;19097:21:3::1;-1:-1:-1::0;;;;;19090:39:3::1;;19130:2;19090:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;19090:43:3::1;-1:-1:-1::0;;;;;19090:43:3::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;19090:43:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;19090:43:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;19090:43:3;;:62:::1;:47;:62;:::i;:::-;:94;;19069:182;;;;-1:-1:-1::0;;;19069:182:3::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;611:1;;18384:874:::0;;;;;;:::o;5564:715::-;5846:19;5867:17;5819:8;559:15;547:8;:27;;539:62;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;;;;5927:188:::1;5956:5;5975:4;5993:9;6016:14;6044:12;6078:4;6097:8;5927:15;:188::i;:::-;5900:215:::0;;-1:-1:-1;5900:215:3;-1:-1:-1;6125:51:3::1;6153:5:::0;6160:2;5900:215;6125:27:::1;:51::i;:::-;6192:4;-1:-1:-1::0;;;;;6186:20:3::1;;6207:9;6186:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;6186:31:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;6186:31:3;;;;6227:45;6258:2;6262:9;6227:30;:45::i;:::-;5564:715:::0;;;;;;;;;;:::o;20399:250::-;20546:17;20582:60;20610:8;20620:9;20631:10;20582:27;:60::i;:::-;20575:67;20399:250;-1:-1:-1;;;;20399:250:3:o;450:38::-;;;:::o;15000:947::-;15251:24;15224:8;559:15;547:8;:27;;539:62;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;;;;15310:4:::1;-1:-1:-1::0;;;;;15299:15:3::1;:4;;15304:1;15299:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;15299:7:3::1;-1:-1:-1::0;;;;;15299:15:3::1;;15291:55;;;::::0;;-1:-1:-1;;;15291:55:3;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;15366:53;15394:7;15403:9;15414:4;;15366:53;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;15366:27:3::1;::::0;-1:-1:-1;;;15366:53:3:i:1;:::-;15356:63;;15464:9;15450:7;15458:1;15450:10;;;;;;;;;;;;;;:23;;15429:107;;;;-1:-1:-1::0;;;15429:107:3::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15552:4;-1:-1:-1::0;;;;;15546:19:3::1;;15573:7;15581:1;15573:10;;;;;;;;;;;;;;15546:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;15546:40:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;15546:40:3;;;;;15622:4;-1:-1:-1::0;;;;;15616:20:3::1;;15654:49;15677:7;15686:4;;15691:1;15686:7;;;;;;15654:49;15721:7;15729:1;15721:10;;;;;;;;;;;;;;15616:129;;;;;;;;;;;;;-1:-1:-1::0;;;;;15616:129:3::1;-1:-1:-1::0;;;;;15616:129:3::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;15616:129:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;15616:129:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;15616:129:3;15596:159:::1;;;;15765:24;15771:7;15780:4;;15765:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;15786:2:3;;-1:-1:-1;15765:5:3::1;::::0;-1:-1:-1;;15765:24:3:i:1;:::-;15850:7;15858:1;15850:10;;;;;;;;;;;;;;15838:9;:22;15834:106;;;15874:66;15905:10;15929:7;15937:1;15929:10;;;;;;;;;;;;;;15917:9;:22;15874:30;:66::i;:::-;15000:947:::0;;;;;;;;:::o;13102:932::-;13366:24;13339:8;559:15;547:8;:27;;539:62;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;13439:4:3::1;13414:29;:4:::0;;-1:-1:-1;;13419:15:3;;13414:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;13414:21:3::1;-1:-1:-1::0;;;;;13414:29:3::1;;13406:69;;;::::0;;-1:-1:-1;;;13406:69:3;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;13495:53;13523:7;13532:9;13543:4;;13495:53;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;13495:27:3::1;::::0;-1:-1:-1;;;13495:53:3:i:1;:::-;13485:63;;13593:11;13579:7;13587:1;13579:10;;;;;;;;;;;;;;:25;;13558:109;;;;-1:-1:-1::0;;;13558:109:3::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13677:173;13722:4;;13727:1;13722:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;13722:7:3::1;13743:10;13767:49;13790:7;13799:4;;13804:1;13799:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;13799:7:3::1;13808:4;;13813:1;13808:7;;;;;;13767:49;13830:7;13838:1;13830:10;;;;;;;;;;;;;;13677:31;:173::i;:::-;13860:35;13866:7;13875:4;;13860:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;13889:4:3::1;::::0;-1:-1:-1;13860:5:3::1;::::0;-1:-1:-1;;13860:35:3:i:1;:::-;13911:4;-1:-1:-1::0;;;;;13905:20:3::1;;13926:7;13951:1;13934:7;:14;:18;13926:27;;;;;;;;;;;;;;13905:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;13905:49:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;13905:49:3;;;;13964:63;13995:2;13999:7;14024:1;14007:7;:14;:18;13999:27;;;;;;;;;;;;;;13964:30;:63::i;:::-;13102:932:::0;;;;;;;;;:::o;21165:249::-;21307:24;21354:53;21382:7;21391:9;21402:4;21354:27;:53::i;:::-;21347:60;;21165:249;;;;;:::o;12272:824::-;12526:24;12499:8;559:15;547:8;:27;;539:62;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;;;;12585:4:::1;-1:-1:-1::0;;;;;12574:15:3::1;:4;;12579:1;12574:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;12574:7:3::1;-1:-1:-1::0;;;;;12574:15:3::1;;12566:55;;;::::0;;-1:-1:-1;;;12566:55:3;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;12641:54;12670:7;12679:9;12690:4;;12641:54;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;12641:28:3::1;::::0;-1:-1:-1;;;12641:54:3:i:1;:::-;12631:64;;12757:12;12726:7;12751:1;12734:7;:14;:18;12726:27;;;;;;;;;;;;;;:43;;12705:131;;;;-1:-1:-1::0;;;12705:131:3::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12852:4;-1:-1:-1::0;;;;;12846:19:3::1;;12873:7;12881:1;12873:10;;;;;;;;;;;;;;12846:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;12846:40:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;12846:40:3;;;;;12922:4;-1:-1:-1::0;;;;;12916:20:3::1;;12954:49;12977:7;12986:4;;12991:1;12986:7;;;;;;12954:49;13021:7;13029:1;13021:10;;;;;;;;;;;;;;12916:129;;;;;;;;;;;;;-1:-1:-1::0;;;;;12916:129:3::1;-1:-1:-1::0;;;;;12916:129:3::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;12916:129:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;12916:129:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;12916:129:3;12896:159:::1;;;;13065:24;13071:7;13080:4;;13065:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;13086:2:3;;-1:-1:-1;13065:5:3::1;::::0;-1:-1:-1;;13065:24:3:i:1;6285:895::-:0;6618:15;6635;6662:12;6677:47;6700:7;6709:6;6717;6677:22;:47::i;:::-;6662:62;;6734:13;6750:10;:36;;6777:9;6750:36;;;-1:-1:-1;;6750:36:3;6796:172;;;-1:-1:-1;;;6796:172:3;;6835:10;6796:172;;;;6867:4;6796:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6734:52;;-1:-1:-1;;;;;;6796:25:3;;;;;:172;;;;;-1:-1:-1;;6796:172:3;;;;;;;;-1:-1:-1;6796:25:3;:172;;;2:2:-1;;;;27:1;24;17:12;2:2;6796:172:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6796:172:3;;;;6999:174;7028:6;7048;7068:9;7091:10;7115;7139:2;7155:8;6999:15;:174::i;:::-;6978:195;;;;;;;;6285:895;;;;;;;;;;;;;;;;:::o;10812:735::-;11079:24;11052:8;559:15;547:8;:27;;539:62;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;;;;11129:53:::1;11158:7;11167:8;11177:4;;11129:53;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;11129:28:3::1;::::0;-1:-1:-1;;;11129:53:3:i:1;:::-;11119:63;;11244:12;11213:7;11238:1;11221:7;:14;:18;11213:27;;;;;;;;;;;;;;:43;;11192:131;;;;-1:-1:-1::0;;;11192:131:3::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11333:173;11378:4;;11383:1;11378:7;;;;;;11333:173;11516:24;11522:7;11531:4;;11516:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;11537:2:3;;-1:-1:-1;11516:5:3::1;::::0;-1:-1:-1;;11516:24:3:i:1;3510:1078::-:0;3829:19;3862:17;3893;3789:8;559:15;547:8;:27;;539:62;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;;;;3962:169:::1;3989:5;4008:4;4026:18;4058:9;4081:14;4109:12;3962:13;:169::i;:::-;3935:196:::0;;-1:-1:-1;3935:196:3;-1:-1:-1;4141:12:3::1;4156:44;4179:7;4188:5:::0;4195:4:::1;4156:22;:44::i;:::-;4141:59;;4210:69;4242:5;4249:10;4261:4;4267:11;4210:31;:69::i;:::-;4295:4;-1:-1:-1::0;;;;;4289:19:3::1;;4316:9;4289:39;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;4289:39:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4289:39:3;;;;;4351:4;-1:-1:-1::0;;;;;4345:20:3::1;;4366:4;4372:9;4345:37;;;;;;;;;;;;;-1:-1:-1::0;;;;;4345:37:3::1;-1:-1:-1::0;;;;;4345:37:3::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;4345:37:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4345:37:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;4345:37:3;4338:45:::1;;;;4418:4;-1:-1:-1::0;;;;;4405:23:3::1;;4429:2;4405:27;;;;;;;;;;;;;-1:-1:-1::0;;;;;4405:27:3::1;-1:-1:-1::0;;;;;4405:27:3::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;4405:27:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4405:27:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;4405:27:3;;-1:-1:-1;4481:9:3::1;:21:::0;-1:-1:-1;4477:104:3::1;;;4516:65;4547:10;4571:9;4559;:21;4516:30;:65::i;:::-;611:1;3510:1078:::0;;;;;;;;;;;:::o;17620:758::-;17857:8;559:15;547:8;:27;;539:62;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;;;;17877:171:::1;17922:4;;17927:1;17922:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;17922:7:3::1;17943:10;17967:49;17990:7;17999:4;;18004:1;17999:7;;;;;;17967:49;18030:8;17877:31;:171::i;:::-;18058:21;18089:4:::0;;-1:-1:-1;;18094:15:3;;18089:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;18089:21:3::1;-1:-1:-1::0;;;;;18082:39:3::1;;18122:2;18082:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;18082:43:3::1;-1:-1:-1::0;;;;;18082:43:3::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;18082:43:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;18082:43:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;18082:43:3;18135:44:::1;::::0;;18082:43:::1;18135:44:::0;;::::1;::::0;;;;;;;;;;;18082:43;;-1:-1:-1;18135:44:3::1;::::0;;;18170:4;;;;;;18135:44;::::1;::::0;18170:4;;18135:44;18170:4;18135:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;18176:2:3;;-1:-1:-1;18135:34:3::1;::::0;-1:-1:-1;;18135:44:3:i:1;:::-;18292:12:::0;18210:62:::1;18258:13:::0;18217:4;;-1:-1:-1;;18222:15:3;;18217:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;18217:21:3::1;-1:-1:-1::0;;;;;18210:39:3::1;;18250:2;18210:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;18210:43:3::1;-1:-1:-1::0;;;;;18210:43:3::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;20655:249:3::0;20802:16;20837:60;20864:9;20875;20886:10;20837:26;:60::i;11553:713::-;11820:24;11793:8;559:15;547:8;:27;;539:62;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;;;;11870:53:::1;11898:7;11907:9;11918:4;;11870:53;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;11870:27:3::1;::::0;-1:-1:-1;;;11870:53:3:i:1;:::-;11860:63;;11968:11;11954:7;11962:1;11954:10;;;;;;;;;;;;;;:25;;11933:109;;;;-1:-1:-1::0;;;11933:109:3::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8174:741:::0;8445:17;8426:8;559:15;547:8;:27;;539:62;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;;;;8490:188:::1;8519:5;8538:4;8556:9;8579:14;8607:12;8641:4;8660:8;8490:15;:188::i;:::-;8764:38;::::0;;-1:-1:-1;;;8764:38:3;;8796:4:::1;8764:38;::::0;::::1;::::0;;;8474:204;;-1:-1:-1;8688:124:3::1;::::0;-1:-1:-1;8729:5:3;;8748:2;;-1:-1:-1;;;;;8764:23:3;::::1;::::0;::::1;::::0;:38;;;;;::::1;::::0;;;;;;;;;:23;:38;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;8764:38:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;8764:38:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;8764:38:3;8688:27:::1;:124::i;:::-;8828:4;-1:-1:-1::0;;;;;8822:20:3::1;;8843:9;8822:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;8822:31:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;8822:31:3;;;;8863:45;8894:2;8898:9;8863:30;:45::i;20167:226::-:0;20303:15;20337:49;20358:7;20367:8;20377;20337:20;:49::i;4628:930::-;4926:15;4943;4899:8;559:15;547:8;:27;;539:62;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;;;;4974:12:::1;4989:47;5012:7;5021:6;5029;4989:22;:47::i;:::-;5046:60;::::0;;-1:-1:-1;;;5046:60:3;;5078:10:::1;5046:60;::::0;::::1;::::0;-1:-1:-1;;;;;5046:31:3;::::1;:60:::0;;;;;;;;;;;;;;4974:62;;-1:-1:-1;5046:31:3;;::::1;::::0;:60;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;5046:31:3;:60;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;5046:60:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;5046:60:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;5179:27:3::1;::::0;;;;;-1:-1:-1;;;;;5179:27:3;;::::1;;::::0;::::1;::::0;;;5143:15:::1;::::0;;;5179:23;;::::1;::::0;::::1;::::0;:27;;;;;;;;;;;5143:15;5179:23;:27;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;5179:27:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;5179:27:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;5179:27:3;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;5179:27:3;-1:-1:-1;5217:14:3::1;5237:41;5263:6:::0;5271;5237:25:::1;:41::i;:::-;5216:62;;;5319:6;-1:-1:-1::0;;;;;5309:16:3::1;:6;-1:-1:-1::0;;;;;5309:16:3::1;;:82;;5374:7;5383;5309:82;;;5341:7;5350;5309:82;5288:103:::0;;-1:-1:-1;5288:103:3;-1:-1:-1;5409:21:3;;::::1;;5401:70;;;;-1:-1:-1::0;;;5401:70:3::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5500:10;5489:7;:21;;5481:70;;;;-1:-1:-1::0;;;5481:70:3::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;611:1;;;;4628:930:::0;;;;;;;;;;;:::o;403:41::-;;;:::o;14040:954::-;14304:24;14277:8;559:15;547:8;:27;;539:62;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;14377:4:3::1;14352:29;:4:::0;;-1:-1:-1;;14357:15:3;;14352:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;14352:21:3::1;-1:-1:-1::0;;;;;14352:29:3::1;;14344:69;;;::::0;;-1:-1:-1;;;14344:69:3;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;14433:53;14462:7;14471:8;14481:4;;14433:53;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;14433:28:3::1;::::0;-1:-1:-1;;;14433:53:3:i:1;:::-;14423:63;;14548:12;14517:7;14542:1;14525:7;:14;:18;14517:27;;;;;;;;;;;;;;:43;;14496:131;;;;-1:-1:-1::0;;;14496:131:3::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20910:249:::0;21052:24;21099:53;21128:7;21137:8;21147:4;21099:28;:53::i;7186:912::-;7535:19;7556:17;7589:12;7604:44;7627:7;7636:5;7643:4;7604:22;:44::i;:::-;7589:59;;7658:13;7674:10;:36;;7701:9;7674:36;;;-1:-1:-1;;7674:36:3;7720:172;;;-1:-1:-1;;;7720:172:3;;7759:10;7720:172;;;;7791:4;7720:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7658:52;;-1:-1:-1;;;;;;7720:25:3;;;;;:172;;;;;-1:-1:-1;;7720:172:3;;;;;;;;-1:-1:-1;7720:25:3;:172;;;2:2:-1;;;;27:1;24;17:12;2:2;7720:172:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7720:172:3;;;;7929:162;7961:5;7980:9;8003:14;8031:12;8057:2;8073:8;7929:18;:162::i;:::-;7902:189;;;;-1:-1:-1;7186:912:3;-1:-1:-1;;;;;;;;;;;;;7186:912:3:o;2589:915::-;2936:15;2965;2994:17;2896:8;559:15;547:8;:27;;539:62;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;;;;3057:167:::1;3084:6;3104;3124:14;3152;3180:10;3204;3057:13;:167::i;:::-;3036:188:::0;;-1:-1:-1;3036:188:3;-1:-1:-1;3234:12:3::1;3249:47;3272:7;3281:6:::0;3289;3249:22:::1;:47::i;:::-;3234:62;;3306:66;3338:6;3346:10;3358:4;3364:7;3306:31;:66::i;:::-;3382;3414:6;3422:10;3434:4;3440:7;3382:31;:66::i;:::-;3483:4;-1:-1:-1::0;;;;;3470:23:3::1;;3494:2;3470:27;;;;;;;;;;;;;-1:-1:-1::0;;;;;3470:27:3::1;-1:-1:-1::0;;;;;3470:27:3::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3470:27:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3470:27:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;3470:27:3;2589:915;;;;-1:-1:-1;3470:27:3;;-1:-1:-1;2589:915:3;;-1:-1:-1;;;;;;;;;2589:915:3:o;19264:862::-;19498:8;559:15;547:8;:27;;539:62;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;-1:-1:-1;;;539:62:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;19551:4:3::1;19526:29;:4:::0;;-1:-1:-1;;19531:15:3;;19526:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;19526:21:3::1;-1:-1:-1::0;;;;;19526:29:3::1;;19518:69;;;::::0;;-1:-1:-1;;;19518:69:3;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;19597:171;19642:4;;19647:1;19642:7;;;;;;19597:171;19778:55;19813:4;;19778:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;19827:4:3::1;::::0;-1:-1:-1;19778:34:3::1;::::0;-1:-1:-1;;19778:55:3:i:1;:::-;19863:37;::::0;;-1:-1:-1;;;19863:37:3;;19894:4:::1;19863:37;::::0;::::1;::::0;;;19843:17:::1;::::0;-1:-1:-1;;;;;19870:4:3::1;19863:22;::::0;::::1;::::0;:37;;;;;::::1;::::0;;;;;;;;;:22;:37;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;19863:37:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;19863:37:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;19863:37:3;;-1:-1:-1;19931:25:3;;::::1;;19910:113;;;;-1:-1:-1::0;;;19910:113:3::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20039:4;-1:-1:-1::0;;;;;20033:20:3::1;;20054:9;20033:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;20033:31:3;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;20033:31:3;;;;20074:45;20105:2;20109:9;20074:30;:45::i;8921:898::-:0;9267:17;9296:12;9311:44;9334:7;9343:5;9350:4;9311:22;:44::i;:::-;9296:59;;9365:13;9381:10;:36;;9408:9;9381:36;;;-1:-1:-1;;9381:36:3;9427:172;;;-1:-1:-1;;;9427:172:3;;9466:10;9427:172;;;;9498:4;9427:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9365:52;;-1:-1:-1;;;;;;9427:25:3;;;;;:172;;;;;-1:-1:-1;;9427:172:3;;;;;;;;-1:-1:-1;9427:25:3;:172;;;2:2:-1;;;;27:1;24;17:12;2:2;9427:172:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9427:172:3;;;;9621:191;9682:5;9701:9;9724:14;9752:12;9778:2;9794:8;9621:47;:191::i;:::-;9609:203;8921:898;-1:-1:-1;;;;;;;;;;;;;8921:898:3:o;846:633:7:-;965:12;990:14;1006;1024:26;1035:6;1043;1024:10;:26::i;:::-;1262:32;;;-1:-1:-1;;1262:32:7;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1262:32:7;;;;;1252:43;;;;;;1144:286;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1144:286:7;;;;;;;1113:335;;;;;;;;;846:633;-1:-1:-1;;;;;846:633:7:o;16090:1524:3:-;16224:9;16219:1389;16253:1;16239:4;:11;:15;16235:1;:19;16219:1389;;;16276:13;16291:14;16310:4;16315:1;16310:7;;;;;;;;;;;;;;16319:4;16324:1;16328;16324:5;16319:11;;;;;;;;;;;;;;16275:56;;;;16346:14;16366:40;16392:5;16399:6;16366:25;:40::i;:::-;16345:61;;;16420:17;16470:46;16493:7;16502:5;16509:6;16470:22;:46::i;:::-;16420:110;;16544:19;16577:20;16686:16;16704;16726:4;-1:-1:-1;;;;;16726:16:3;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16726:18:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16726:18:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16726:18:3;;;;;;;16685:59;;;;;-1:-1:-1;16685:59:3;;-1:-1:-1;16763:20:3;;-1:-1:-1;;;;;16810:15:3;;;;;;;:101;;16892:8;16902;16810:101;;;16849:8;16859;16810:101;16762:149;;;;16943:94;17007:12;16950:5;-1:-1:-1;;;;;16943:23:3;;16975:4;16943:38;;;;;;;;;;;;;-1:-1:-1;;;;;16943:38:3;-1:-1:-1;;;;;16943:38:3;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;16943:94:3;16929:108;;17070:147;17119:11;17152:12;17186:13;17070:27;:147::i;:::-;17055:162;;16219:1389;;;;17246:18;17266;17297:6;-1:-1:-1;;;;;17288:15:3;:5;-1:-1:-1;;;;;17288:15:3;;:105;;17368:12;17390:1;17288:105;;;17331:1;17335:12;17288:105;17245:148;;;;17407:10;17438:1;17424:4;:11;:15;17420:1;:19;:112;;17529:3;17420:112;;;17458:52;17481:7;17490:6;17498:4;17503:1;17507;17503:5;17498:11;;;;;;;;;;;;;;17458:22;:52::i;:::-;17584:12;;;17594:1;17584:12;;;;;;;;;;17546:51;;;;;;;;;;;;;;;-1:-1:-1;;;;;17546:51:3;;;;;;;;;;;;;;;;;;;;;;17407:125;;-1:-1:-1;17546:9:3;;;;;;17556:10;;17568;;17407:125;;17584:12;;17546:51;;;;;;;;17584:12;;17546:51;;;;17584:12;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17546:51:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17546:51:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;16256:3:3;;;;;-1:-1:-1;16219:1389:3;;-1:-1:-1;;;;;;;;;;16219:1389:3;;;16090:1524;;:::o;335:136:8:-;427:5;;;422:16;;;;414:50;;;;;-1:-1:-1;;;414:50:8;;;;;;;;;;;;;;;;;;;;;;;;;;;661:446:2;900:45;;;-1:-1:-1;;;;;900:45:2;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;900:45:2;;;;;;;25:18:-1;;61:17;;96:58;182:15;900:45:2;179:29:-1;160:49;;876:79:2;;;;841:12;;855:17;;876:10;;;;900:45;876:79;;;25:18:-1;876:79:2;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;876:79:2;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;840:115:2;;;;986:7;:57;;;;-1:-1:-1;998:11:2;;:16;;:44;;;1029:4;1018:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1018:24:2;998:44;965:135;;;;;-1:-1:-1;;;965:135:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;661:446;;;;;:::o;1614:197::-;1726:12;;;1686;1726;;;;;;;;;-1:-1:-1;;;;;1704:7:2;;;1719:5;;1704:35;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1704:35:2;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1685:54:2;;;1757:7;1749:55;;;;-1:-1:-1;;;1749:55:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2627:591:7;2759:17;2807:1;2796:8;:12;2788:66;;;;-1:-1:-1;;;2788:66:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2897:1;2885:9;:13;:31;;;;;2915:1;2902:10;:14;2885:31;2864:116;;;;-1:-1:-1;;;2864:116:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2990:23;3016:17;:8;3029:3;3016:17;:12;:17;:::i;:::-;2990:43;-1:-1:-1;3043:17:7;3063:31;2990:43;3083:10;3063:31;:19;:31;:::i;:::-;3043:51;-1:-1:-1;3104:19:7;3126:40;3150:15;3126:19;:9;3140:4;3126:19;:13;:19;:::i;:::-;:23;:40;:23;:40;:::i;:::-;3104:62;;3200:11;3188:9;:23;;;;;;;2627:591;-1:-1:-1;;;;;;;2627:591:7:o;4648:632::-;4782:24;4841:1;4826:4;:11;:16;;4818:57;;;;;-1:-1:-1;;;4818:57:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;4909:4;:11;4895:26;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4895:26:7;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;4895:26:7;;4885:36;;4961:9;4931:7;4956:1;4939:7;:14;:18;4931:27;;;;;;;;;;;;;;;;;:39;4997:11;;-1:-1:-1;;4997:15:7;4980:294;5014:5;;4980:294;;5041:17;5060:18;5082:104;5111:7;5136:4;5145:1;5141;:5;5136:11;;;;;;;;;;;;;;5165:4;5170:1;5165:7;;;;;;;;;;;;;;5082:11;:104::i;:::-;5040:146;;;;5217:46;5229:7;5237:1;5229:10;;;;;;;;;;;;;;5241:9;5252:10;5217:11;:46::i;:::-;5200:7;5212:1;5208;:5;5200:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;;;5021:3:7;4980:294;;;;4648:632;;;;;:::o;9926:880:3:-;10065:9;10060:740;10094:1;10080:4;:11;:15;10076:1;:19;10060:740;;;10117:13;10132:14;10151:4;10156:1;10151:7;;;;;;;;;;;;;;10160:4;10165:1;10169;10165:5;10160:11;;;;;;;;;;;;;;10116:56;;;;10187:14;10207:40;10233:5;10240:6;10207:25;:40::i;:::-;10186:61;;;10261:17;10281:7;10289:1;10293;10289:5;10281:14;;;;;;;;;;;;;;10261:34;;10310:18;10330;10361:6;-1:-1:-1;;;;;10352:15:3;:5;-1:-1:-1;;;;;10352:15:3;;:99;;10429:9;10448:1;10352:99;;;10395:1;10399:9;10352:99;10309:142;;;;10465:10;10496:1;10482:4;:11;:15;10478:1;:19;:112;;10587:3;10478:112;;;10516:52;10539:7;10548:6;10556:4;10561:1;10565;10561:5;10556:11;;;;;;;10516:52;10465:125;;10617:46;10640:7;10649:5;10656:6;10617:22;:46::i;:::-;-1:-1:-1;;;;;10604:65:3;;10687:10;10715;10743:2;10773:1;10763:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;10763:12:3;87:42:-1;143:17;;-1:-1;10763:12:3;;10604:185;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10604:185:3;-1:-1:-1;;;;;10604:185:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10604:185:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10604:185:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;10097:3:3;;;;;-1:-1:-1;10060:740:3;;-1:-1:-1;;;;;;;;10060:740:3;;;9926:880;;;:::o;1113:495:2:-;1390:51;;;-1:-1:-1;;;;;1390:51:2;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1390:51:2;;;;;;;25:18:-1;;61:17;;96:58;182:15;-1:-1;;;179:29;160:49;;1366:85:2;;;;1331:12;;1345:17;;1366:10;;;;1390:51;1366:85;;;25:18:-1;1366:85:2;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1366:85:2;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1330:121:2;;;;1482:7;:57;;;;-1:-1:-1;1494:11:2;;:16;;:44;;;1525:4;1514:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1514:24:2;1494:44;1461:140;;;;-1:-1:-1;;;1461:140:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1113:495;;;;;;:::o;3959:611:7:-;4093:24;4152:1;4137:4;:11;:16;;4129:57;;;;;-1:-1:-1;;;4129:57:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;4220:4;:11;4206:26;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4206:26:7;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;4206:26:7;;4196:36;;4255:8;4242:7;4250:1;4242:10;;;;;;;;;;;;;:21;;;;;4278:9;4273:291;4307:1;4293:4;:11;:15;4289:1;:19;4273:291;;;4330:17;4349:18;4371:104;4400:7;4425:4;4430:1;4425:7;;;;;;;;;;;;;;4450:4;4455:1;4459;4455:5;4450:11;;;;;;;4371:104;4329:146;;;;4506:47;4519:7;4527:1;4519:10;;;;;;;;;;;;;;4531:9;4542:10;4506:12;:47::i;:::-;4489:7;4497:1;4501;4497:5;4489:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;4310:3:7;;4273:291;;902:1681:3;1224:48;;;;;;-1:-1:-1;;;;;1224:48:3;;;;;;;;;;;;;;;;1125:15;;;;;;1240:7;1224:32;;;;;;:48;;;;;;;;;;;;;;;:32;:48;;;2:2:-1;;;;27:1;24;17:12;2:2;1224:48:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1224:48:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1224:48:3;-1:-1:-1;;;;;1224:62:3;;1220:144;;;1302:51;;;;;;-1:-1:-1;;;;;1302:51:3;;;;;;;;;;;;;;;;1318:7;1302:35;;;;;;:51;;;;;;;;;;;;;;;-1:-1:-1;1302:35:3;:51;;;2:2:-1;;;;27:1;24;17:12;2:2;1302:51:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1302:51:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;1220:144:3;1374:16;1392;1412:97;1452:7;1473:6;1493;1412:26;:97::i;:::-;1373:136;;;;1523:8;1535:1;1523:13;:30;;;;-1:-1:-1;1540:13:3;;1523:30;1519:1058;;;1591:14;;-1:-1:-1;1607:14:3;;-1:-1:-1;1519:1058:3;;;1653:22;1678:118;1716:14;1748:8;1774;1678:20;:118::i;:::-;1653:143;;1832:14;1814;:32;1810:757;;1913:10;1895:14;:28;;1866:135;;;;-1:-1:-1;;;1866:135:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2041:14;;-1:-1:-1;2057:14:3;-1:-1:-1;2057:14:3;1810:757;;;2111:22;2136:134;2178:14;2214:8;2244;2136:20;:134::i;:::-;2111:159;;2313:14;2295;:32;;2288:40;;;;2393:10;2375:14;:28;;2346:135;;;;-1:-1:-1;;;2346:135:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2521:14;-1:-1:-1;2537:14:3;;-1:-1:-1;1810:757:3;1519:1058;;902:1681;;;;;;;;;;;:::o;3336:544:7:-;3468:16;3516:1;3504:9;:13;3496:68;;;;-1:-1:-1;;;3496:68:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3607:1;3595:9;:13;:31;;;;;3625:1;3612:10;:14;3595:31;3574:116;;;;-1:-1:-1;;;3574:116:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3700:17;3720:34;3749:4;3720:24;:9;3734;3720:24;:13;:24;:::i;:::-;:28;:34;:28;:34;:::i;:::-;3700:54;-1:-1:-1;3764:19:7;3786:34;3816:3;3786:25;:10;3801:9;3786:25;:14;:25;:::i;:34::-;3764:56;;3841:32;3871:1;3854:11;3842:9;:23;;;;;;;3841:32;:29;:32;:::i;:::-;3830:43;3336:544;-1:-1:-1;;;;;;3336:544:7:o;2119:389::-;2240:15;2285:1;2275:7;:11;2267:59;;;;-1:-1:-1;;;2267:59:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2368:1;2357:8;:12;:28;;;;;2384:1;2373:8;:12;2357:28;2336:113;;;;-1:-1:-1;;;2336:113:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2493:8;2469:21;:7;2481:8;2469:21;:11;:21;:::i;:::-;:32;;;;;;;2119:389;-1:-1:-1;;;;2119:389:7:o;364:393::-;463:14;479;527:6;-1:-1:-1;;;;;517:16:7;:6;-1:-1:-1;;;;;517:16:7;;;509:64;;;;-1:-1:-1;;;509:64:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;611:6;-1:-1:-1;;;;;602:15:7;:6;-1:-1:-1;;;;;602:15:7;;:77;;664:6;672;602:77;;;633:6;641;602:77;583:96;;-1:-1:-1;583:96:7;-1:-1:-1;;;;;;697:20:7;;689:61;;;;;-1:-1:-1;;;689:61:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;364:393;;;;;:::o;477:149:8:-;535:9;564:6;;;:30;;-1:-1:-1;;579:5:8;;;593:1;588;579:5;588:1;574:15;;;;;:20;564:30;556:63;;;;;-1:-1:-1;;;556:63:8;;;;;;;;;;;;;;;;;;;;;;;;;;;194:135;286:5;;;281:16;;;;273:49;;;;;-1:-1:-1;;;273:49:8;;;;;;;;;;;;;;;;;;;;;;;;;;;1534:475:7;1657:16;1675;1704:14;1724:26;1735:6;1743;1724:10;:26::i;:::-;1703:47;;;1761:16;1779;1827:32;1835:7;1844:6;1852;1827:7;:32::i;:::-;-1:-1:-1;;;;;1801:80:7;;:82;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1801:82:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1801:82:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1801:82:7;;;;;;;1760:123;;;;;-1:-1:-1;1760:123:7;;-1:-1:-1;;;;;;1916:16:7;;;;;;;:86;;1983:8;1993;1916:86;;;1948:8;1958;1916:86;1893:109;;;;-1:-1:-1;1534:475:7;-1:-1:-1;;;;;;;1534:475:7:o"
            },
            "methodIdentifiers": {
              "WSYS()": "08b0b435",
              "addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)": "e8e33700",
              "addLiquiditySYS(address,uint256,uint256,uint256,address,uint256)": "3c7356d5",
              "factory()": "c45a0155",
              "getAmountIn(uint256,uint256,uint256)": "85f8c259",
              "getAmountOut(uint256,uint256,uint256)": "054d50d4",
              "getAmountsIn(uint256,address[])": "1f00ca74",
              "getAmountsOut(uint256,address[])": "d06ca61f",
              "quote(uint256,uint256,uint256)": "ad615dec",
              "removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)": "baa2abde",
              "removeLiquiditySYS(address,uint256,uint256,uint256,address,uint256)": "016c8414",
              "removeLiquiditySYSSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256)": "aab4c40b",
              "removeLiquiditySYSWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "dfd9111b",
              "removeLiquiditySYSWithPermitSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "f1a730bd",
              "removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "2195995c",
              "swapExactSYSForTokens(uint256,address[],address,uint256)": "1fef2389",
              "swapExactSYSForTokensSupportingFeeOnTransferTokens(uint256,address[],address,uint256)": "00121258",
              "swapExactTokensForSYS(uint256,uint256,address[],address,uint256)": "c78c12cf",
              "swapExactTokensForSYSSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)": "ee8794c4",
              "swapExactTokensForTokens(uint256,uint256,address[],address,uint256)": "38ed1739",
              "swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)": "5c11d795",
              "swapSYSForExactTokens(uint256,address[],address,uint256)": "08e4e89e",
              "swapTokensForExactSYS(uint256,uint256,address[],address,uint256)": "181950fd",
              "swapTokensForExactTokens(uint256,uint256,address[],address,uint256)": "8803dbee"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_WSYS\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"WSYS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountSYSMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquiditySYS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountSYS\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountSYSMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquiditySYS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountSYS\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountSYSMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquiditySYSSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountSYS\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountSYSMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquiditySYSWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountSYS\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountSYSMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquiditySYSWithPermitSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountSYS\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactSYSForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactSYSForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForSYS\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForSYSSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapSYSForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactSYS\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/pegasys-periphery/PegasysRouter.sol\":\"PegasysRouter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"contracts/pegasys-core/interfaces/IPegasysFactory.sol\":{\"keccak256\":\"0xb915812fa0c8d76f5990c7dd9a53e913faabf720e46b43708c9093b8bc920f80\",\"urls\":[\"bzz-raw://e51eea287d507af0deed0958d1fd1749ab243cc8fa0f17c6c7c0c5c5a8acefda\",\"dweb:/ipfs/QmarCyndC7i4fTaE7LzK3ZDrFpCRRWdghmV8caTrbV3ffx\"]},\"contracts/pegasys-core/interfaces/IPegasysPair.sol\":{\"keccak256\":\"0xe06142fe264492614787818ad0426b4951c1055d6e0d3fe623dcfa15fa720c1c\",\"urls\":[\"bzz-raw://6018cb9b34372172b8aac92095bb1246758ced102c88a1817238c666f094dc1a\",\"dweb:/ipfs/QmUAEPt7Qr3Yus9Qp4sQ3m6c8DouM4rnd6nvXHyCknRWPs\"]},\"contracts/pegasys-lib/libraries/TransferHelper.sol\":{\"keccak256\":\"0xbf42c75c3c7805c6b4769f6555a33c81291c96e6d0984ae60989e446d98af568\",\"urls\":[\"bzz-raw://afadc96fba4e2342c1befc67b097ccc3f8e521495b189ce92a494b76757518f3\",\"dweb:/ipfs/Qmf7eqdQiXce6opbYPJM3yhGtZTFX2uEh94gyjEM5P9sYE\"]},\"contracts/pegasys-periphery/PegasysRouter.sol\":{\"keccak256\":\"0xfcaf826f84b41939b42b3f7e84a2c5d79c9a7797326a75eaf3d2488764ae9a93\",\"urls\":[\"bzz-raw://b4ae4ea034cd3cba9cf2b5503e5f1fa2fd21fd8b8ecdddd39eaa47dada4482dc\",\"dweb:/ipfs/QmSjDGKCQUC3qwWAjbbVaPGHLMJ7BvMdCZ5mk8AcXKLdUL\"]},\"contracts/pegasys-periphery/interfaces/IERC20.sol\":{\"keccak256\":\"0x8030fe76a136123186f6957f5040ece6036e4ce17170aabdf7fb50d5c9922fec\",\"urls\":[\"bzz-raw://f20fb9f2cef5945bd8a7d8389151eefd1200349adb837ee1ee1d6b47b23d14d8\",\"dweb:/ipfs/QmYYF3trehgeWsQy6DeVxGKEvWkC6YYcRnwxPTj4vs7opC\"]},\"contracts/pegasys-periphery/interfaces/IPegasysRouter.sol\":{\"keccak256\":\"0xcc41828b05d6b73c62df9cfd8bf094d2b2e8824e4a6e83e91e3b6ad72fa91fa9\",\"urls\":[\"bzz-raw://a4414fbfe3a224fbdf46838cb692d148414485aa68ba926c1b02433544fcc3cf\",\"dweb:/ipfs/QmeR8UNF4NnLVex7CeU2sSd2eij9F5TPvmXUCwhepZqnqr\"]},\"contracts/pegasys-periphery/interfaces/IWSYS.sol\":{\"keccak256\":\"0x7d43b633993e12b235a83073cf0dce6f55b7ddf9c5994d310993d47e7ed238b8\",\"urls\":[\"bzz-raw://5d19512a60c09060f6946f97d32fb58e106807771b96c9c2dd22a33ee26e9b41\",\"dweb:/ipfs/QmR4jm8cvtpoTh6ZUfCAmProPh3ezvXfLqM7qhT44WcVBS\"]},\"contracts/pegasys-periphery/libraries/PegasysLibrary.sol\":{\"keccak256\":\"0x87a22aee75c8555681b727b74e619f68be5ce940fab8e246dc0bbd03b062c2d6\",\"urls\":[\"bzz-raw://f8ed02bc4cd576bd420e022f542208d5eef5ee2cae61cacd8b19658661314322\",\"dweb:/ipfs/QmR8yg7R4qsJDEoLNa2zwafTcMgCvpD6PFypKDDD3GYqrm\"]},\"contracts/pegasys-periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0x97171c62f1b697e13fe00ec6f108507648c31fa95eeb602fbe80ac6d4047ab40\",\"urls\":[\"bzz-raw://74cf88d5a4a6478e8b834663a939af326258e3be96c907cd7f2561552fc76421\",\"dweb:/ipfs/QmQy4etRUZYZCpCCL9X1nfHcGputhfSFMMDbcnjBgr9Rw4\"]}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          }
        }
      },
      "contracts/pegasys-periphery/interfaces/IERC20.sol": {
        "IERC20": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/pegasys-periphery/interfaces/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"contracts/pegasys-periphery/interfaces/IERC20.sol\":{\"keccak256\":\"0x8030fe76a136123186f6957f5040ece6036e4ce17170aabdf7fb50d5c9922fec\",\"urls\":[\"bzz-raw://f20fb9f2cef5945bd8a7d8389151eefd1200349adb837ee1ee1d6b47b23d14d8\",\"dweb:/ipfs/QmYYF3trehgeWsQy6DeVxGKEvWkC6YYcRnwxPTj4vs7opC\"]}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          }
        }
      },
      "contracts/pegasys-periphery/interfaces/IPegasysRouter.sol": {
        "IPegasysRouter": {
          "abi": [
            {
              "inputs": [],
              "name": "WSYS",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenA",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenB",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amountADesired",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountBDesired",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountAMin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountBMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "addLiquidity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountA",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountB",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amountTokenDesired",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountTokenMin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountSYSMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "addLiquiditySYS",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountToken",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountSYS",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "factory",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveOut",
                  "type": "uint256"
                }
              ],
              "name": "getAmountIn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveOut",
                  "type": "uint256"
                }
              ],
              "name": "getAmountOut",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                }
              ],
              "name": "getAmountsIn",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                }
              ],
              "name": "getAmountsOut",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountA",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveA",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "reserveB",
                  "type": "uint256"
                }
              ],
              "name": "quote",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountB",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenA",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenB",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountAMin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountBMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "removeLiquidity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountA",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountB",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountTokenMin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountSYSMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "removeLiquiditySYS",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountToken",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountSYS",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountTokenMin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountSYSMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "removeLiquiditySYSSupportingFeeOnTransferTokens",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountSYS",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountTokenMin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountSYSMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "approveMax",
                  "type": "bool"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "removeLiquiditySYSWithPermit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountToken",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountSYS",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountTokenMin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountSYSMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "approveMax",
                  "type": "bool"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "removeLiquiditySYSWithPermitSupportingFeeOnTransferTokens",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountSYS",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "tokenA",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenB",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountAMin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountBMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "approveMax",
                  "type": "bool"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "removeLiquidityWithPermit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountA",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountB",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOutMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapExactSYSForTokens",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOutMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapExactSYSForTokensSupportingFeeOnTransferTokens",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountOutMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapExactTokensForSYS",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountOutMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapExactTokensForSYSSupportingFeeOnTransferTokens",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountOutMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapExactTokensForTokens",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountOutMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapSYSForExactTokens",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountInMax",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapTokensForExactSYS",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountInMax",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapTokensForExactTokens",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "WSYS()": "08b0b435",
              "addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)": "e8e33700",
              "addLiquiditySYS(address,uint256,uint256,uint256,address,uint256)": "3c7356d5",
              "factory()": "c45a0155",
              "getAmountIn(uint256,uint256,uint256)": "85f8c259",
              "getAmountOut(uint256,uint256,uint256)": "054d50d4",
              "getAmountsIn(uint256,address[])": "1f00ca74",
              "getAmountsOut(uint256,address[])": "d06ca61f",
              "quote(uint256,uint256,uint256)": "ad615dec",
              "removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)": "baa2abde",
              "removeLiquiditySYS(address,uint256,uint256,uint256,address,uint256)": "016c8414",
              "removeLiquiditySYSSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256)": "aab4c40b",
              "removeLiquiditySYSWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "dfd9111b",
              "removeLiquiditySYSWithPermitSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "f1a730bd",
              "removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)": "2195995c",
              "swapExactSYSForTokens(uint256,address[],address,uint256)": "1fef2389",
              "swapExactSYSForTokensSupportingFeeOnTransferTokens(uint256,address[],address,uint256)": "00121258",
              "swapExactTokensForSYS(uint256,uint256,address[],address,uint256)": "c78c12cf",
              "swapExactTokensForSYSSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)": "ee8794c4",
              "swapExactTokensForTokens(uint256,uint256,address[],address,uint256)": "38ed1739",
              "swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)": "5c11d795",
              "swapSYSForExactTokens(uint256,address[],address,uint256)": "08e4e89e",
              "swapTokensForExactSYS(uint256,uint256,address[],address,uint256)": "181950fd",
              "swapTokensForExactTokens(uint256,uint256,address[],address,uint256)": "8803dbee"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WSYS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountSYSMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquiditySYS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountSYS\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountSYSMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquiditySYS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountSYS\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountSYSMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquiditySYSSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountSYS\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountSYSMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquiditySYSWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountSYS\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountSYSMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquiditySYSWithPermitSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountSYS\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactSYSForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactSYSForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForSYS\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForSYSSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapSYSForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactSYS\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/pegasys-periphery/interfaces/IPegasysRouter.sol\":\"IPegasysRouter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"contracts/pegasys-periphery/interfaces/IPegasysRouter.sol\":{\"keccak256\":\"0xcc41828b05d6b73c62df9cfd8bf094d2b2e8824e4a6e83e91e3b6ad72fa91fa9\",\"urls\":[\"bzz-raw://a4414fbfe3a224fbdf46838cb692d148414485aa68ba926c1b02433544fcc3cf\",\"dweb:/ipfs/QmeR8UNF4NnLVex7CeU2sSd2eij9F5TPvmXUCwhepZqnqr\"]}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          }
        }
      },
      "contracts/pegasys-periphery/interfaces/IWSYS.sol": {
        "IWSYS": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "balanceOf(address)": "70a08231",
              "deposit()": "d0e30db0",
              "transfer(address,uint256)": "a9059cbb",
              "withdraw(uint256)": "2e1a7d4d"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/pegasys-periphery/interfaces/IWSYS.sol\":\"IWSYS\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"contracts/pegasys-periphery/interfaces/IWSYS.sol\":{\"keccak256\":\"0x7d43b633993e12b235a83073cf0dce6f55b7ddf9c5994d310993d47e7ed238b8\",\"urls\":[\"bzz-raw://5d19512a60c09060f6946f97d32fb58e106807771b96c9c2dd22a33ee26e9b41\",\"dweb:/ipfs/QmR4jm8cvtpoTh6ZUfCAmProPh3ezvXfLqM7qhT44WcVBS\"]}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          }
        }
      },
      "contracts/pegasys-periphery/libraries/PegasysLibrary.sol": {
        "PegasysLibrary": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bc3ffa00bf28f4a99ce97e38a5f1f9bf7bb69d6a33ff57c08092fc044eeb84e964736f6c63430006060033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBC EXTCODEHASH STATICCALL STOP 0xBF 0x28 DELEGATECALL 0xA9 SWAP13 0xE9 PUSH31 0x38A5F1F9BF7BB69D6A33FF57C08092FC044EEB84E964736F6C634300060600 CALLER ",
              "sourceMap": "202:5080:7:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bc3ffa00bf28f4a99ce97e38a5f1f9bf7bb69d6a33ff57c08092fc044eeb84e964736f6c63430006060033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBC EXTCODEHASH STATICCALL STOP 0xBF 0x28 DELEGATECALL 0xA9 SWAP13 0xE9 PUSH31 0x38A5F1F9BF7BB69D6A33FF57C08092FC044EEB84E964736F6C634300060600 CALLER ",
              "sourceMap": "202:5080:7:-:0;;;;;;12:1:-1;9;2:12"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/pegasys-periphery/libraries/PegasysLibrary.sol\":\"PegasysLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"contracts/pegasys-core/interfaces/IPegasysFactory.sol\":{\"keccak256\":\"0xb915812fa0c8d76f5990c7dd9a53e913faabf720e46b43708c9093b8bc920f80\",\"urls\":[\"bzz-raw://e51eea287d507af0deed0958d1fd1749ab243cc8fa0f17c6c7c0c5c5a8acefda\",\"dweb:/ipfs/QmarCyndC7i4fTaE7LzK3ZDrFpCRRWdghmV8caTrbV3ffx\"]},\"contracts/pegasys-core/interfaces/IPegasysPair.sol\":{\"keccak256\":\"0xe06142fe264492614787818ad0426b4951c1055d6e0d3fe623dcfa15fa720c1c\",\"urls\":[\"bzz-raw://6018cb9b34372172b8aac92095bb1246758ced102c88a1817238c666f094dc1a\",\"dweb:/ipfs/QmUAEPt7Qr3Yus9Qp4sQ3m6c8DouM4rnd6nvXHyCknRWPs\"]},\"contracts/pegasys-periphery/libraries/PegasysLibrary.sol\":{\"keccak256\":\"0x87a22aee75c8555681b727b74e619f68be5ce940fab8e246dc0bbd03b062c2d6\",\"urls\":[\"bzz-raw://f8ed02bc4cd576bd420e022f542208d5eef5ee2cae61cacd8b19658661314322\",\"dweb:/ipfs/QmR8yg7R4qsJDEoLNa2zwafTcMgCvpD6PFypKDDD3GYqrm\"]},\"contracts/pegasys-periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0x97171c62f1b697e13fe00ec6f108507648c31fa95eeb602fbe80ac6d4047ab40\",\"urls\":[\"bzz-raw://74cf88d5a4a6478e8b834663a939af326258e3be96c907cd7f2561552fc76421\",\"dweb:/ipfs/QmQy4etRUZYZCpCCL9X1nfHcGputhfSFMMDbcnjBgr9Rw4\"]}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          }
        }
      },
      "contracts/pegasys-periphery/libraries/SafeMath.sol": {
        "SafeMath": {
          "abi": [],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b5ed225a037e11aa2723aff37385a5fb426d86eae257a0358cb6c2dfed11393964736f6c63430006060033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 0xED 0x22 GAS SUB PUSH31 0x11AA2723AFF37385A5FB426D86EAE257A0358CB6C2DFED11393964736F6C63 NUMBER STOP MOD MOD STOP CALLER ",
              "sourceMap": "171:607:8:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b5ed225a037e11aa2723aff37385a5fb426d86eae257a0358cb6c2dfed11393964736f6c63430006060033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 0xED 0x22 GAS SUB PUSH31 0x11AA2723AFF37385A5FB426D86EAE257A0358CB6C2DFED11393964736F6C63 NUMBER STOP MOD MOD STOP CALLER ",
              "sourceMap": "171:607:8:-:0;;;;;;12:1:-1;9;2:12"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/pegasys-periphery/libraries/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"contracts/pegasys-periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0x97171c62f1b697e13fe00ec6f108507648c31fa95eeb602fbe80ac6d4047ab40\",\"urls\":[\"bzz-raw://74cf88d5a4a6478e8b834663a939af326258e3be96c907cd7f2561552fc76421\",\"dweb:/ipfs/QmQy4etRUZYZCpCCL9X1nfHcGputhfSFMMDbcnjBgr9Rw4\"]}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          }
        }
      },
      "contracts/pegasys-periphery/test/DeflatingERC20.sol": {
        "DeflatingERC20": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_totalSupply",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50604051610c41380380610c418339818101604052602081101561003357600080fd5b50516040514690806052610bef8239604080519182900360520182208282018252601483527f4465666c6174696e67205465737420546f6b656e0000000000000000000000006020938401528151808301835260018152603160f81b908401528151808401919091527ff89e31130e6fd3d87d62a1ac2770fba58bed5a06c47ce70fa97f8218b1b2743a818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018590523060a0808301919091528251808303909101815260c090910190915280519101206003555061012633836001600160e01b0361012d16565b505061022d565b610146816000546101cf60201b6109251790919060201c565b60009081556001600160a01b0383168152600160209081526040909120546101779183906109256101cf821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b80820182811015610227576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b6109b38061023c6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461026b578063a9059cbb14610273578063d505accf1461029f578063dd62ed3e146102f2576100df565b80633644e5151461021757806370a082311461021f5780637ecebe0014610245576100df565b806323b872dd116100bd57806323b872dd146101bb57806330adf81f146101f1578063313ce567146101f9576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101a1575b600080fd5b6100ec610320565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61018d6004803603604081101561017757600080fd5b506001600160a01b038135169060200135610359565b604080519115158252519081900360200190f35b6101a9610370565b60408051918252519081900360200190f35b61018d600480360360608110156101d157600080fd5b506001600160a01b03813581169160208101359091169060400135610376565b6101a9610410565b610201610434565b6040805160ff9092168252519081900360200190f35b6101a9610439565b6101a96004803603602081101561023557600080fd5b50356001600160a01b031661043f565b6101a96004803603602081101561025b57600080fd5b50356001600160a01b0316610451565b6100ec610463565b61018d6004803603604081101561028957600080fd5b506001600160a01b03813516906020013561049c565b6102f0600480360360e08110156102b557600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356104a9565b005b6101a96004803603604081101561030857600080fd5b506001600160a01b03813581169160200135166106d1565b6040518060400160405280601481526020017f4465666c6174696e67205465737420546f6b656e00000000000000000000000081525081565b60006103663384846106ee565b5060015b92915050565b60005481565b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146103fb576001600160a01b03841660009081526002602090815260408083203384529091529020546103d6908363ffffffff61075016565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b6104068484846107a8565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020017f445454000000000000000000000000000000000000000000000000000000000081525081565b60006103663384846107a8565b428410156104fe576040805162461bcd60e51b815260206004820152600760248201527f4558504952454400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015610634573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061066a5750886001600160a01b0316816001600160a01b0316145b6106bb576040805162461bcd60e51b815260206004820152601160248201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604482015290519081900360640190fd5b6106c68989896106ee565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b8082038281111561036a576040805162461bcd60e51b815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b606481046107b68482610887565b60006107c8838363ffffffff61075016565b6001600160a01b0386166000908152600160205260409020549091506107f4908263ffffffff61075016565b6001600160a01b038087166000908152600160205260408082209390935590861681522054610829908263ffffffff61092516565b6001600160a01b0380861660008181526001602090815260409182902094909455805185815290519193928916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35050505050565b6001600160a01b0382166000908152600160205260409020546108b0908263ffffffff61075016565b6001600160a01b038316600090815260016020526040812091909155546108dd908263ffffffff61075016565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b8082018281101561036a576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea2646970667358221220049d6045b0a062734481b81f4b831ed99d7610650c918e19907b2a3a41442e8364736f6c63430006060033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xC41 CODESIZE SUB DUP1 PUSH2 0xC41 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 MLOAD CHAINID SWAP1 DUP1 PUSH1 0x52 PUSH2 0xBEF DUP3 CODECOPY PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB PUSH1 0x52 ADD DUP3 KECCAK256 DUP3 DUP3 ADD DUP3 MSTORE PUSH1 0x14 DUP4 MSTORE PUSH32 0x4465666C6174696E67205465737420546F6B656E000000000000000000000000 PUSH1 0x20 SWAP4 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xF89E31130E6FD3D87D62A1AC2770FBA58BED5A06C47CE70FA97F8218B1B2743A DUP2 DUP4 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE POP PUSH2 0x126 CALLER DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x12D AND JUMP JUMPDEST POP POP PUSH2 0x22D JUMP JUMPDEST PUSH2 0x146 DUP2 PUSH1 0x0 SLOAD PUSH2 0x1CF PUSH1 0x20 SHL PUSH2 0x925 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x177 SWAP2 DUP4 SWAP1 PUSH2 0x925 PUSH2 0x1CF DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x227 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9B3 DUP1 PUSH2 0x23C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F2 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x245 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1BB JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F9 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1A1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x320 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x359 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A9 PUSH2 0x370 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x18D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x376 JUMP JUMPDEST PUSH2 0x1A9 PUSH2 0x410 JUMP JUMPDEST PUSH2 0x201 PUSH2 0x434 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A9 PUSH2 0x439 JUMP JUMPDEST PUSH2 0x1A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x43F JUMP JUMPDEST PUSH2 0x1A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x451 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x463 JUMP JUMPDEST PUSH2 0x18D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x49C JUMP JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x4A9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x6D1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4465666C6174696E67205465737420546F6B656E000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x366 CALLER DUP5 DUP5 PUSH2 0x6EE JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0x0 NOT EQ PUSH2 0x3FB JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x3D6 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x750 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x406 DUP5 DUP5 DUP5 PUSH2 0x7A8 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4454540000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x366 CALLER DUP5 DUP5 PUSH2 0x7A8 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x4FE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4558504952454400000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH1 0x1F NOT DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x634 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x66A JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x6BB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5349474E4154555245000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x6C6 DUP10 DUP10 DUP10 PUSH2 0x6EE JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x36A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x64 DUP2 DIV PUSH2 0x7B6 DUP5 DUP3 PUSH2 0x887 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C8 DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x750 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x7F4 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x750 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP7 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x829 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x925 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP10 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x8B0 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x750 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x8DD SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x750 AND JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x36A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIV SWAP14 PUSH1 0x45 0xB0 LOG0 PUSH3 0x734481 0xB8 0x1F 0x4B DUP4 0x1E 0xD9 SWAP14 PUSH23 0x10650C918E19907B2A3A41442E8364736F6C6343000606 STOP CALLER GASLIMIT 0x49 POP CALLDATACOPY BALANCE ORIGIN DIFFICULTY PUSH16 0x6D61696E28737472696E67206E616D65 0x2C PUSH20 0x7472696E672076657273696F6E2C75696E743235 CALLDATASIZE KECCAK256 PUSH4 0x6861696E 0x49 PUSH5 0x2C61646472 PUSH6 0x737320766572 PUSH10 0x6679696E67436F6E7472 PUSH2 0x6374 0x29 ",
              "sourceMap": "62:4065:9:-:0;;;922:548;5:9:-1;2:2;;;27:1;24;17:12;2:2;922:548:9;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;922:548:9;1130:133;;1032:9;;1130:133;;;;;;;;;;;;;;;;1297:4;;;;;;;;;;;;;;1331:10;;;;;;;;;;-1:-1:-1;;;1331:10:9;;;;1102:310;;;;;;;;;1281:22;1102:310;;;;1321:21;1102:310;;;;;;;;;;1393:4;1102:310;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1102:310:9;;;;;;;1079:343;;;;;1060:16;:362;-1:-1:-1;1432:31:9;1438:10;1450:12;-1:-1:-1;;;;;1432:5:9;:31;:::i;:::-;922:548;;62:4065;;1476:200;1551:22;1567:5;1551:11;;:15;;;;;;:22;;;;:::i;:::-;1537:11;:36;;;-1:-1:-1;;;;;1599:13:9;;;;:9;:13;;;;;;;;;:24;;1617:5;;1599:17;;;;;:24;;:::i;:::-;-1:-1:-1;;;;;1583:13:9;;;;;;:9;:13;;;;;;;;:40;;;;1638:31;;;;;;;1583:13;;;;1638:31;;;;;;;;;;1476:200;;:::o;194:135:8:-;286:5;;;281:16;;;;273:49;;;;;-1:-1:-1;;;273:49:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;194:135;;;;:::o;62:4065:9:-;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461026b578063a9059cbb14610273578063d505accf1461029f578063dd62ed3e146102f2576100df565b80633644e5151461021757806370a082311461021f5780637ecebe0014610245576100df565b806323b872dd116100bd57806323b872dd146101bb57806330adf81f146101f1578063313ce567146101f9576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101a1575b600080fd5b6100ec610320565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61018d6004803603604081101561017757600080fd5b506001600160a01b038135169060200135610359565b604080519115158252519081900360200190f35b6101a9610370565b60408051918252519081900360200190f35b61018d600480360360608110156101d157600080fd5b506001600160a01b03813581169160208101359091169060400135610376565b6101a9610410565b610201610434565b6040805160ff9092168252519081900360200190f35b6101a9610439565b6101a96004803603602081101561023557600080fd5b50356001600160a01b031661043f565b6101a96004803603602081101561025b57600080fd5b50356001600160a01b0316610451565b6100ec610463565b61018d6004803603604081101561028957600080fd5b506001600160a01b03813516906020013561049c565b6102f0600480360360e08110156102b557600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356104a9565b005b6101a96004803603604081101561030857600080fd5b506001600160a01b03813581169160200135166106d1565b6040518060400160405280601481526020017f4465666c6174696e67205465737420546f6b656e00000000000000000000000081525081565b60006103663384846106ee565b5060015b92915050565b60005481565b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146103fb576001600160a01b03841660009081526002602090815260408083203384529091529020546103d6908363ffffffff61075016565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b6104068484846107a8565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020017f445454000000000000000000000000000000000000000000000000000000000081525081565b60006103663384846107a8565b428410156104fe576040805162461bcd60e51b815260206004820152600760248201527f4558504952454400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015610634573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061066a5750886001600160a01b0316816001600160a01b0316145b6106bb576040805162461bcd60e51b815260206004820152601160248201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604482015290519081900360640190fd5b6106c68989896106ee565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b8082038281111561036a576040805162461bcd60e51b815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b606481046107b68482610887565b60006107c8838363ffffffff61075016565b6001600160a01b0386166000908152600160205260409020549091506107f4908263ffffffff61075016565b6001600160a01b038087166000908152600160205260408082209390935590861681522054610829908263ffffffff61092516565b6001600160a01b0380861660008181526001602090815260409182902094909455805185815290519193928916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35050505050565b6001600160a01b0382166000908152600160205260409020546108b0908263ffffffff61075016565b6001600160a01b038316600090815260016020526040812091909155546108dd908263ffffffff61075016565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b8082018281101561036a576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea2646970667358221220049d6045b0a062734481b81f4b831ed99d7610650c918e19907b2a3a41442e8364736f6c63430006060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F2 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x245 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1BB JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F9 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1A1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x320 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x359 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A9 PUSH2 0x370 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x18D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x376 JUMP JUMPDEST PUSH2 0x1A9 PUSH2 0x410 JUMP JUMPDEST PUSH2 0x201 PUSH2 0x434 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A9 PUSH2 0x439 JUMP JUMPDEST PUSH2 0x1A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x43F JUMP JUMPDEST PUSH2 0x1A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x451 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x463 JUMP JUMPDEST PUSH2 0x18D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x49C JUMP JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x4A9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x6D1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4465666C6174696E67205465737420546F6B656E000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x366 CALLER DUP5 DUP5 PUSH2 0x6EE JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0x0 NOT EQ PUSH2 0x3FB JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x3D6 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x750 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x406 DUP5 DUP5 DUP5 PUSH2 0x7A8 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4454540000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x366 CALLER DUP5 DUP5 PUSH2 0x7A8 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x4FE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4558504952454400000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH1 0x1F NOT DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x634 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x66A JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x6BB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5349474E4154555245000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x6C6 DUP10 DUP10 DUP10 PUSH2 0x6EE JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x36A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x64 DUP2 DIV PUSH2 0x7B6 DUP5 DUP3 PUSH2 0x887 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C8 DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x750 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x7F4 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x750 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP7 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x829 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x925 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP10 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x8B0 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x750 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x8DD SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x750 AND JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x36A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIV SWAP14 PUSH1 0x45 0xB0 LOG0 PUSH3 0x734481 0xB8 0x1F 0x4B DUP4 0x1E 0xD9 SWAP14 PUSH23 0x10650C918E19907B2A3A41442E8364736F6C6343000606 STOP CALLER ",
              "sourceMap": "62:4065:9:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;62:4065:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;125:52:9;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;125:52:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2514:147;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;2514:147:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;267:26;;;:::i;:::-;;;;;;;;;;;;;;;;2812:361;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;2812:361:9;;;;;;;;;;;;;;;;;:::i;561:116::-;;;:::i;226:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;420:31;;;:::i;299:44::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;299:44:9;-1:-1:-1;;;;;299:44:9;;:::i;683:41::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;683:41:9;-1:-1:-1;;;;;683:41:9;;:::i;183:37::-;;;:::i;2667:139::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;2667:139:9;;;;;;;;:::i;3179:946::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;3179:946:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;349:64;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;349:64:9;;;;;;;;;;:::i;125:52::-;;;;;;;;;;;;;;;;;;;:::o;2514:147::-;2581:4;2597:36;2606:10;2618:7;2627:5;2597:8;:36::i;:::-;-1:-1:-1;2650:4:9;2514:147;;;;;:::o;267:26::-;;;;:::o;2812:361::-;-1:-1:-1;;;;;2943:15:9;;2923:4;2943:15;;;:9;:15;;;;;;;;2959:10;2943:27;;;;;;;;-1:-1:-1;;2943:42:9;2939:171;;-1:-1:-1;;;;;3031:15:9;;;;;;:9;:15;;;;;;;;3047:10;3031:27;;;;;;;;:68;;3080:5;3031:68;:31;:68;:::i;:::-;-1:-1:-1;;;;;3001:15:9;;;;;;:9;:15;;;;;;;;3017:10;3001:27;;;;;;;:98;2939:171;3119:26;3129:4;3135:2;3139:5;3119:9;:26::i;:::-;-1:-1:-1;3162:4:9;2812:361;;;;;:::o;561:116::-;611:66;561:116;:::o;226:35::-;259:2;226:35;:::o;420:31::-;;;;:::o;299:44::-;;;;;;;;;;;;;:::o;683:41::-;;;;;;;;;;;;;:::o;183:37::-;;;;;;;;;;;;;;;;;;;:::o;2667:139::-;2730:4;2746:32;2756:10;2768:2;2772:5;2746:9;:32::i;3179:946::-;3392:15;3380:8;:27;;3372:47;;;;;-1:-1:-1;;;3372:47:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;3531:16;;-1:-1:-1;;;;;3768:13:9;;;3429:14;3768:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3596:243;;611:66;3596:243;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3596:243:9;;;;;3565:292;;;;;;3469:402;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3469:402:9;;;;;;3446:435;;;;;;;;;3918:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3429:14;;3768:15;3918:26;;;;;-1:-1:-1;;3918:26:9;;;;;;;;;;3768:15;3918:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;3918:26:9;;-1:-1:-1;;3918:26:9;;;-1:-1:-1;;;;;;;3975:30:9;;;;;;:59;;;4029:5;-1:-1:-1;;;;;4009:25:9;:16;-1:-1:-1;;;;;4009:25:9;;3975:59;3954:123;;;;;-1:-1:-1;;;3954:123:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;4087:31;4096:5;4103:7;4112:5;4087:8;:31::i;:::-;3179:946;;;;;;;;;:::o;349:64::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1896:199::-;-1:-1:-1;;;;;2009:16:9;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2057:31;;;;;;;;;;;;;;;;;1896:199;;;:::o;335:136:8:-;427:5;;;422:16;;;;414:50;;;;;-1:-1:-1;;;414:50:8;;;;;;;;;;;;;;;;;;;;;;;;;;;2101:407:9;2238:3;2230:11;;2251:23;2257:4;2230:11;2251:5;:23::i;:::-;2284:22;2309:21;:5;2319:10;2309:21;:9;:21;:::i;:::-;-1:-1:-1;;;;;2358:15:9;;;;;;:9;:15;;;;;;2284:46;;-1:-1:-1;2358:35:9;;2284:46;2358:35;:19;:35;:::i;:::-;-1:-1:-1;;;;;2340:15:9;;;;;;;:9;:15;;;;;;:53;;;;2419:13;;;;;;;:33;;2437:14;2419:33;:17;:33;:::i;:::-;-1:-1:-1;;;;;2403:13:9;;;;;;;:9;:13;;;;;;;;;:49;;;;2467:34;;;;;;;2403:13;;2467:34;;;;;;;;;;;;;2101:407;;;;;:::o;1682:208::-;-1:-1:-1;;;;;1763:15:9;;;;;;:9;:15;;;;;;:26;;1783:5;1763:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;1745:15:9;;;;;;:9;:15;;;;;:44;;;;1813:11;:22;;1829:5;1813:22;:15;:22;:::i;:::-;1799:11;:36;;;1850:33;;;;;;;;-1:-1:-1;;;;;1850:33:9;;;;;;;;;;;;;1682:208;;:::o;194:135:8:-;286:5;;;281:16;;;;273:49;;;;;-1:-1:-1;;;273:49:8;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "PERMIT_TYPEHASH()": "30adf81f",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/pegasys-periphery/test/DeflatingERC20.sol\":\"DeflatingERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"contracts/pegasys-periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0x97171c62f1b697e13fe00ec6f108507648c31fa95eeb602fbe80ac6d4047ab40\",\"urls\":[\"bzz-raw://74cf88d5a4a6478e8b834663a939af326258e3be96c907cd7f2561552fc76421\",\"dweb:/ipfs/QmQy4etRUZYZCpCCL9X1nfHcGputhfSFMMDbcnjBgr9Rw4\"]},\"contracts/pegasys-periphery/test/DeflatingERC20.sol\":{\"keccak256\":\"0xe75d5aa8ab9b1de4aab0ca54beb59be67fe8ed89d8e6998d975a177534cb7b94\",\"urls\":[\"bzz-raw://7a1facfbf08ffe460b6a011ee56a1fdbafdaa66e611a7cd3019c9238cd570214\",\"dweb:/ipfs/QmTXPdCXDTmWzfmXzoiCJ7HQVLLPYW3tDXf9gisydctzTj\"]}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 3591,
                "contract": "contracts/pegasys-periphery/test/DeflatingERC20.sol:DeflatingERC20",
                "label": "totalSupply",
                "offset": 0,
                "slot": "0",
                "type": "t_uint256"
              },
              {
                "astId": 3595,
                "contract": "contracts/pegasys-periphery/test/DeflatingERC20.sol:DeflatingERC20",
                "label": "balanceOf",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 3601,
                "contract": "contracts/pegasys-periphery/test/DeflatingERC20.sol:DeflatingERC20",
                "label": "allowance",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
              },
              {
                "astId": 3603,
                "contract": "contracts/pegasys-periphery/test/DeflatingERC20.sol:DeflatingERC20",
                "label": "DOMAIN_SEPARATOR",
                "offset": 0,
                "slot": "3",
                "type": "t_bytes32"
              },
              {
                "astId": 3610,
                "contract": "contracts/pegasys-periphery/test/DeflatingERC20.sol:DeflatingERC20",
                "label": "nonces",
                "offset": 0,
                "slot": "4",
                "type": "t_mapping(t_address,t_uint256)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_mapping(t_address,t_uint256))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_uint256)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          }
        }
      },
      "contracts/pegasys-periphery/test/ERC20.sol": {
        "ERC20": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_totalSupply",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50604051610b6b380380610b6b8339818101604052602081101561003357600080fd5b50516040514690806052610b198239604080519182900360520182208282018252600a8352692a32b9ba102a37b5b2b760b11b6020938401528151808301835260018152603160f81b908401528151808401919091527f81e8ad438398ab0d4a2a7ecb159490c091bb27c67ace5181f70084e30fadaea2818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018590523060a0808301919091528251808303909101815260c090910190915280519101206003555061011333836001600160e01b0361011a16565b505061021a565b610133816000546101bc60201b6108621790919060201c565b60009081556001600160a01b0383168152600160209081526040909120546101649183906108626101bc821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b80820182811015610214576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b6108f0806102296000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461026b578063a9059cbb14610273578063d505accf1461029f578063dd62ed3e146102f2576100df565b80633644e5151461021757806370a082311461021f5780637ecebe0014610245576100df565b806323b872dd116100bd57806323b872dd146101bb57806330adf81f146101f1578063313ce567146101f9576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101a1575b600080fd5b6100ec610320565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61018d6004803603604081101561017757600080fd5b506001600160a01b038135169060200135610359565b604080519115158252519081900360200190f35b6101a9610370565b60408051918252519081900360200190f35b61018d600480360360608110156101d157600080fd5b506001600160a01b03813581169160208101359091169060400135610376565b6101a9610410565b610201610434565b6040805160ff9092168252519081900360200190f35b6101a9610439565b6101a96004803603602081101561023557600080fd5b50356001600160a01b031661043f565b6101a96004803603602081101561025b57600080fd5b50356001600160a01b0316610451565b6100ec610463565b61018d6004803603604081101561028957600080fd5b506001600160a01b03813516906020013561049c565b6102f0600480360360e08110156102b557600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356104a9565b005b6101a96004803603604081101561030857600080fd5b506001600160a01b03813581169160200135166106d1565b6040518060400160405280600a81526020017f5465737420546f6b656e0000000000000000000000000000000000000000000081525081565b60006103663384846106ee565b5060015b92915050565b60005481565b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146103fb576001600160a01b03841660009081526002602090815260408083203384529091529020546103d6908363ffffffff61075016565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b6104068484846107a8565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600281526020017f545400000000000000000000000000000000000000000000000000000000000081525081565b60006103663384846107a8565b428410156104fe576040805162461bcd60e51b815260206004820152600760248201527f4558504952454400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015610634573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061066a5750886001600160a01b0316816001600160a01b0316145b6106bb576040805162461bcd60e51b815260206004820152601160248201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604482015290519081900360640190fd5b6106c68989896106ee565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b8082038281111561036a576040805162461bcd60e51b815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6001600160a01b0383166000908152600160205260409020546107d1908263ffffffff61075016565b6001600160a01b038085166000908152600160205260408082209390935590841681522054610806908263ffffffff61086216565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b8082018281101561036a576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea26469706673582212208b07086c1a5b42553f90258506f4de62c849eb7d0d1c2973037d45417fc2ed0164736f6c63430006060033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xB6B CODESIZE SUB DUP1 PUSH2 0xB6B DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 MLOAD CHAINID SWAP1 DUP1 PUSH1 0x52 PUSH2 0xB19 DUP3 CODECOPY PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB PUSH1 0x52 ADD DUP3 KECCAK256 DUP3 DUP3 ADD DUP3 MSTORE PUSH1 0xA DUP4 MSTORE PUSH10 0x2A32B9BA102A37B5B2B7 PUSH1 0xB1 SHL PUSH1 0x20 SWAP4 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x81E8AD438398AB0D4A2A7ECB159490C091BB27C67ACE5181F70084E30FADAEA2 DUP2 DUP4 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE POP PUSH2 0x113 CALLER DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x11A AND JUMP JUMPDEST POP POP PUSH2 0x21A JUMP JUMPDEST PUSH2 0x133 DUP2 PUSH1 0x0 SLOAD PUSH2 0x1BC PUSH1 0x20 SHL PUSH2 0x862 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x164 SWAP2 DUP4 SWAP1 PUSH2 0x862 PUSH2 0x1BC DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x214 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x8F0 DUP1 PUSH2 0x229 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F2 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x245 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1BB JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F9 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1A1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x320 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x359 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A9 PUSH2 0x370 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x18D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x376 JUMP JUMPDEST PUSH2 0x1A9 PUSH2 0x410 JUMP JUMPDEST PUSH2 0x201 PUSH2 0x434 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A9 PUSH2 0x439 JUMP JUMPDEST PUSH2 0x1A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x43F JUMP JUMPDEST PUSH2 0x1A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x451 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x463 JUMP JUMPDEST PUSH2 0x18D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x49C JUMP JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x4A9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x6D1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5465737420546F6B656E00000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x366 CALLER DUP5 DUP5 PUSH2 0x6EE JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0x0 NOT EQ PUSH2 0x3FB JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x3D6 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x750 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x406 DUP5 DUP5 DUP5 PUSH2 0x7A8 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5454000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x366 CALLER DUP5 DUP5 PUSH2 0x7A8 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x4FE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4558504952454400000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH1 0x1F NOT DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x634 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x66A JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x6BB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5349474E4154555245000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x6C6 DUP10 DUP10 DUP10 PUSH2 0x6EE JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x36A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x7D1 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x750 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x806 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x862 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x36A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP12 SMOD ADDMOD PUSH13 0x1A5B42553F90258506F4DE62C8 0x49 0xEB PUSH30 0xD1C2973037D45417FC2ED0164736F6C6343000606003345495037313244 PUSH16 0x6D61696E28737472696E67206E616D65 0x2C PUSH20 0x7472696E672076657273696F6E2C75696E743235 CALLDATASIZE KECCAK256 PUSH4 0x6861696E 0x49 PUSH5 0x2C61646472 PUSH6 0x737320766572 PUSH10 0x6679696E67436F6E7472 PUSH2 0x6374 0x29 ",
              "sourceMap": "62:3887:10:-:0;;;902:548;5:9:-1;2:2;;;27:1;24;17:12;2:2;902:548:10;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;902:548:10;1110:133;;1012:9;;1110:133;;;;;;;;;;;;;;;;1277:4;;;;;;;;-1:-1:-1;;;1277:4:10;;;;;1311:10;;;;;;;;;;-1:-1:-1;;;1311:10:10;;;;1082:310;;;;;;;;;1261:22;1082:310;;;;1301:21;1082:310;;;;;;;;;;1373:4;1082:310;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1082:310:10;;;;;;;1059:343;;;;;1040:16;:362;-1:-1:-1;1412:31:10;1418:10;1430:12;-1:-1:-1;;;;;1412:5:10;:31;:::i;:::-;902:548;;62:3887;;1456:200;1531:22;1547:5;1531:11;;:15;;;;;;:22;;;;:::i;:::-;1517:11;:36;;;-1:-1:-1;;;;;1579:13:10;;;;:9;:13;;;;;;;;;:24;;1597:5;;1579:17;;;;;:24;;:::i;:::-;-1:-1:-1;;;;;1563:13:10;;;;;;:9;:13;;;;;;;;:40;;;;1618:31;;;;;;;1563:13;;;;1618:31;;;;;;;;;;1456:200;;:::o;194:135:8:-;286:5;;;281:16;;;;273:49;;;;;-1:-1:-1;;;273:49:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;194:135;;;;:::o;62:3887:10:-;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461026b578063a9059cbb14610273578063d505accf1461029f578063dd62ed3e146102f2576100df565b80633644e5151461021757806370a082311461021f5780637ecebe0014610245576100df565b806323b872dd116100bd57806323b872dd146101bb57806330adf81f146101f1578063313ce567146101f9576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101a1575b600080fd5b6100ec610320565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61018d6004803603604081101561017757600080fd5b506001600160a01b038135169060200135610359565b604080519115158252519081900360200190f35b6101a9610370565b60408051918252519081900360200190f35b61018d600480360360608110156101d157600080fd5b506001600160a01b03813581169160208101359091169060400135610376565b6101a9610410565b610201610434565b6040805160ff9092168252519081900360200190f35b6101a9610439565b6101a96004803603602081101561023557600080fd5b50356001600160a01b031661043f565b6101a96004803603602081101561025b57600080fd5b50356001600160a01b0316610451565b6100ec610463565b61018d6004803603604081101561028957600080fd5b506001600160a01b03813516906020013561049c565b6102f0600480360360e08110156102b557600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356104a9565b005b6101a96004803603604081101561030857600080fd5b506001600160a01b03813581169160200135166106d1565b6040518060400160405280600a81526020017f5465737420546f6b656e0000000000000000000000000000000000000000000081525081565b60006103663384846106ee565b5060015b92915050565b60005481565b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146103fb576001600160a01b03841660009081526002602090815260408083203384529091529020546103d6908363ffffffff61075016565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b6104068484846107a8565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600281526020017f545400000000000000000000000000000000000000000000000000000000000081525081565b60006103663384846107a8565b428410156104fe576040805162461bcd60e51b815260206004820152600760248201527f4558504952454400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015610634573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061066a5750886001600160a01b0316816001600160a01b0316145b6106bb576040805162461bcd60e51b815260206004820152601160248201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604482015290519081900360640190fd5b6106c68989896106ee565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b8082038281111561036a576040805162461bcd60e51b815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6001600160a01b0383166000908152600160205260409020546107d1908263ffffffff61075016565b6001600160a01b038085166000908152600160205260408082209390935590841681522054610806908263ffffffff61086216565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b8082018281101561036a576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea26469706673582212208b07086c1a5b42553f90258506f4de62c849eb7d0d1c2973037d45417fc2ed0164736f6c63430006060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F2 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x245 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1BB JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F9 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1A1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x320 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x18D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x359 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A9 PUSH2 0x370 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x18D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x376 JUMP JUMPDEST PUSH2 0x1A9 PUSH2 0x410 JUMP JUMPDEST PUSH2 0x201 PUSH2 0x434 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A9 PUSH2 0x439 JUMP JUMPDEST PUSH2 0x1A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x43F JUMP JUMPDEST PUSH2 0x1A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x451 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x463 JUMP JUMPDEST PUSH2 0x18D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x49C JUMP JUMPDEST PUSH2 0x2F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x4A9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x6D1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5465737420546F6B656E00000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x366 CALLER DUP5 DUP5 PUSH2 0x6EE JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0x0 NOT EQ PUSH2 0x3FB JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x3D6 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x750 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x406 DUP5 DUP5 DUP5 PUSH2 0x7A8 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5454000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x366 CALLER DUP5 DUP5 PUSH2 0x7A8 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x4FE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4558504952454400000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH1 0x1F NOT DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x634 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x66A JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x6BB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5349474E4154555245000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x6C6 DUP10 DUP10 DUP10 PUSH2 0x6EE JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x36A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x7D1 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x750 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x806 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x862 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x36A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP12 SMOD ADDMOD PUSH13 0x1A5B42553F90258506F4DE62C8 0x49 0xEB PUSH30 0xD1C2973037D45417FC2ED0164736F6C6343000606003300000000000000 ",
              "sourceMap": "62:3887:10:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;62:3887:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;116:42:10;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;116:42:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2336:147;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;2336:147:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;247:26;;;:::i;:::-;;;;;;;;;;;;;;;;2634:361;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;2634:361:10;;;;;;;;;;;;;;;;;:::i;541:116::-;;;:::i;206:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;400:31;;;:::i;279:44::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;279:44:10;-1:-1:-1;;;;;279:44:10;;:::i;663:41::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;663:41:10;-1:-1:-1;;;;;663:41:10;;:::i;164:36::-;;;:::i;2489:139::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;2489:139:10;;;;;;;;:::i;3001:946::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;3001:946:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;329:64;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;329:64:10;;;;;;;;;;:::i;116:42::-;;;;;;;;;;;;;;;;;;;:::o;2336:147::-;2403:4;2419:36;2428:10;2440:7;2449:5;2419:8;:36::i;:::-;-1:-1:-1;2472:4:10;2336:147;;;;;:::o;247:26::-;;;;:::o;2634:361::-;-1:-1:-1;;;;;2765:15:10;;2745:4;2765:15;;;:9;:15;;;;;;;;2781:10;2765:27;;;;;;;;-1:-1:-1;;2765:42:10;2761:171;;-1:-1:-1;;;;;2853:15:10;;;;;;:9;:15;;;;;;;;2869:10;2853:27;;;;;;;;:68;;2902:5;2853:68;:31;:68;:::i;:::-;-1:-1:-1;;;;;2823:15:10;;;;;;:9;:15;;;;;;;;2839:10;2823:27;;;;;;;:98;2761:171;2941:26;2951:4;2957:2;2961:5;2941:9;:26::i;:::-;-1:-1:-1;2984:4:10;2634:361;;;;;:::o;541:116::-;591:66;541:116;:::o;206:35::-;239:2;206:35;:::o;400:31::-;;;;:::o;279:44::-;;;;;;;;;;;;;:::o;663:41::-;;;;;;;;;;;;;:::o;164:36::-;;;;;;;;;;;;;;;;;;;:::o;2489:139::-;2552:4;2568:32;2578:10;2590:2;2594:5;2568:9;:32::i;3001:946::-;3214:15;3202:8;:27;;3194:47;;;;;-1:-1:-1;;;3194:47:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;3353:16;;-1:-1:-1;;;;;3590:13:10;;;3251:14;3590:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3418:243;;591:66;3418:243;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3418:243:10;;;;;3387:292;;;;;;3291:402;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3291:402:10;;;;;;3268:435;;;;;;;;;3740:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3251:14;;3590:15;3740:26;;;;;-1:-1:-1;;3740:26:10;;;;;;;;;;3590:15;3740:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;3740:26:10;;-1:-1:-1;;3740:26:10;;;-1:-1:-1;;;;;;;3797:30:10;;;;;;:59;;;3851:5;-1:-1:-1;;;;;3831:25:10;:16;-1:-1:-1;;;;;3831:25:10;;3797:59;3776:123;;;;;-1:-1:-1;;;3776:123:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;3909:31;3918:5;3925:7;3934:5;3909:8;:31::i;:::-;3001:946;;;;;;;;;:::o;329:64::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1876:199::-;-1:-1:-1;;;;;1989:16:10;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2037:31;;;;;;;;;;;;;;;;;1876:199;;;:::o;335:136:8:-;427:5;;;422:16;;;;414:50;;;;;-1:-1:-1;;;414:50:8;;;;;;;;;;;;;;;;;;;;;;;;;;;2081:249:10;-1:-1:-1;;;;;2207:15:10;;;;;;:9;:15;;;;;;:26;;2227:5;2207:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;2189:15:10;;;;;;;:9;:15;;;;;;:44;;;;2259:13;;;;;;;:24;;2277:5;2259:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;2243:13:10;;;;;;;:9;:13;;;;;;;;;:40;;;;2298:25;;;;;;;2243:13;;2298:25;;;;;;;;;;;;;2081:249;;;:::o;194:135:8:-;286:5;;;281:16;;;;273:49;;;;;-1:-1:-1;;;273:49:8;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "PERMIT_TYPEHASH()": "30adf81f",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/pegasys-periphery/test/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"contracts/pegasys-periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0x97171c62f1b697e13fe00ec6f108507648c31fa95eeb602fbe80ac6d4047ab40\",\"urls\":[\"bzz-raw://74cf88d5a4a6478e8b834663a939af326258e3be96c907cd7f2561552fc76421\",\"dweb:/ipfs/QmQy4etRUZYZCpCCL9X1nfHcGputhfSFMMDbcnjBgr9Rw4\"]},\"contracts/pegasys-periphery/test/ERC20.sol\":{\"keccak256\":\"0x7b21436bda03f67a85a401ae8a0e99cbb470a335a28579413da02e2101dd403e\",\"urls\":[\"bzz-raw://23a6a879b83eb79f1bad75c0a2e371eaa2618ecd50fb1235b26b84f0395d7515\",\"dweb:/ipfs/QmRmr6bbFzykzt3gwRwvu2FFyqd3b4rN6ntUqgdrvuHYEy\"]}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 4006,
                "contract": "contracts/pegasys-periphery/test/ERC20.sol:ERC20",
                "label": "totalSupply",
                "offset": 0,
                "slot": "0",
                "type": "t_uint256"
              },
              {
                "astId": 4010,
                "contract": "contracts/pegasys-periphery/test/ERC20.sol:ERC20",
                "label": "balanceOf",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 4016,
                "contract": "contracts/pegasys-periphery/test/ERC20.sol:ERC20",
                "label": "allowance",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
              },
              {
                "astId": 4018,
                "contract": "contracts/pegasys-periphery/test/ERC20.sol:ERC20",
                "label": "DOMAIN_SEPARATOR",
                "offset": 0,
                "slot": "3",
                "type": "t_bytes32"
              },
              {
                "astId": 4025,
                "contract": "contracts/pegasys-periphery/test/ERC20.sol:ERC20",
                "label": "nonces",
                "offset": 0,
                "slot": "4",
                "type": "t_mapping(t_address,t_uint256)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_mapping(t_address,t_uint256))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_uint256)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          }
        }
      },
      "contracts/pegasys-periphery/test/RouterEventEmitter.sol": {
        "RouterEventEmitter": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "Amounts",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "router",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amountOutMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapExactSYSForTokens",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "router",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountOutMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapExactTokensForSYS",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "router",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountOutMin",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapExactTokensForTokens",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "router",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapSYSForExactTokens",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "router",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountInMax",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapTokensForExactSYS",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "router",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amountInMax",
                  "type": "uint256"
                },
                {
                  "internalType": "address[]",
                  "name": "path",
                  "type": "address[]"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                }
              ],
              "name": "swapTokensForExactTokens",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ],
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610d12806100206000396000f3fe6080604052600436106100695760003560e01c8063375734d911610043578063375734d91461026f5780633cec30a914610317578063d9f5b829146103ab57610070565b80631e175e961461007557806322b584101461011f57806332b56fa5146101c757610070565b3661007057005b600080fd5b34801561008157600080fd5b5061011d600480360360c081101561009857600080fd5b6001600160a01b0382351691602081013591604082013591908101906080810160608201356401000000008111156100cf57600080fd5b8201836020820111156100e157600080fd5b8035906020019184602083028401116401000000008311171561010357600080fd5b91935091506001600160a01b03813516906020013561043f565b005b34801561012b57600080fd5b5061011d600480360360c081101561014257600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460208302840111640100000000831117156101ad57600080fd5b91935091506001600160a01b0381351690602001356106ba565b3480156101d357600080fd5b5061011d600480360360c08110156101ea57600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561022157600080fd5b82018360208201111561023357600080fd5b8035906020019184602083028401116401000000008311171561025557600080fd5b91935091506001600160a01b0381351690602001356107a3565b34801561027b57600080fd5b5061011d600480360360c081101561029257600080fd5b6001600160a01b0382351691602081013591604082013591908101906080810160608201356401000000008111156102c957600080fd5b8201836020820111156102db57600080fd5b803590602001918460208302840111640100000000831117156102fd57600080fd5b91935091506001600160a01b03813516906020013561088c565b61011d600480360360a081101561032d57600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561035d57600080fd5b82018360208201111561036f57600080fd5b8035906020019184602083028401116401000000008311171561039157600080fd5b91935091506001600160a01b038135169060200135610975565b61011d600480360360a08110156103c157600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156103f157600080fd5b82018360208201111561040357600080fd5b8035906020019184602083028401116401000000008311171561042557600080fd5b91935091506001600160a01b038135169060200135610be7565b60006060886001600160a01b031663181950fd60e01b8989898989896040516024018087815260200186815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b602083106105295780518252601f19909201916020918201910161050a565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610589576040519150601f19603f3d011682016040523d82523d6000602084013e61058e565b606091505b50915091508161059a57fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b38180602001905160208110156105d057600080fd5b81019080805160405193929190846401000000008211156105f057600080fd5b90830190602082018581111561060557600080fd5b825186602082028301116401000000008211171561062257600080fd5b82525081516020918201928201910280838360005b8381101561064f578181015183820152602001610637565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561069c578181015183820152602001610684565b505050509050019250505060405180910390a1505050505050505050565b60006060886001600160a01b0316638803dbee60e01b8989898989896040516024018087815260200186815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051808280519060200190808383602083106105295780518252601f19909201916020918201910161050a565b60006060886001600160a01b031663c78c12cf60e01b8989898989896040516024018087815260200186815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051808280519060200190808383602083106105295780518252601f19909201916020918201910161050a565b60006060886001600160a01b03166338ed173960e01b8989898989896040516024018087815260200186815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051808280519060200190808383602083106105295780518252601f19909201916020918201910161050a565b60006060876001600160a01b0316631fef238960e01b88888888886040516024018086815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b60208310610a575780518252601f199092019160209182019101610a38565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610ab7576040519150601f19603f3d011682016040523d82523d6000602084013e610abc565b606091505b509150915081610ac857fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b3818060200190516020811015610afe57600080fd5b8101908080516040519392919084640100000000821115610b1e57600080fd5b908301906020820185811115610b3357600080fd5b8251866020820283011164010000000082111715610b5057600080fd5b82525081516020918201928201910280838360005b83811015610b7d578181015183820152602001610b65565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610bca578181015183820152602001610bb2565b505050509050019250505060405180910390a15050505050505050565b60006060876001600160a01b03166308e4e89e60e01b88888888886040516024018086815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825286868281815260200192506020028082843760008382015260408051601f909201601f199081169094018281039094018252928352602080820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909d169c909c178c5292518151919b909a508a995097509550859450879350869250508310610a575780518252601f199092019160209182019101610a3856fea2646970667358221220e858316912682bfaecd9afe3e6fbbbab6b7acf2023ffd8c13c55face3887943464736f6c63430006060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD12 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x69 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x375734D9 GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x375734D9 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x3CEC30A9 EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0xD9F5B829 EQ PUSH2 0x3AB JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x1E175E96 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x22B58410 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0x32B56FA5 EQ PUSH2 0x1C7 JUMPI PUSH2 0x70 JUMP JUMPDEST CALLDATASIZE PUSH2 0x70 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x43F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6BA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x88C JUMP JUMPDEST PUSH2 0x11D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x32D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x36F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x391 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x975 JUMP JUMPDEST PUSH2 0x11D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x3C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x425 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xBE7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x181950FD PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x529 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x50A JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x589 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x58E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x59A JUMPI INVALID JUMPDEST PUSH32 0x4CC17991E3610E3400E74A8306AA421DAAEE1E3446FA22B490604610999E10B3 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x64F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x637 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x69C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x684 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8803DBEE PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x529 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x50A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC78C12CF PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x529 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x50A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38ED1739 PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x529 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x50A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1FEF2389 PUSH1 0xE0 SHL DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xA57 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA38 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xAB7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xABC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xAC8 JUMPI INVALID JUMPDEST PUSH32 0x4CC17991E3610E3400E74A8306AA421DAAEE1E3446FA22B490604610999E10B3 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0xB1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0xB33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0xB50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB7D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB65 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBCA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBB2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8E4E89E PUSH1 0xE0 SHL DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F SWAP1 SWAP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND SWAP1 SWAP5 ADD DUP3 DUP2 SUB SWAP1 SWAP5 ADD DUP3 MSTORE SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP14 AND SWAP13 SWAP1 SWAP13 OR DUP13 MSTORE SWAP3 MLOAD DUP2 MLOAD SWAP2 SWAP12 SWAP1 SWAP11 POP DUP11 SWAP10 POP SWAP8 POP SWAP6 POP DUP6 SWAP5 POP DUP8 SWAP4 POP DUP7 SWAP3 POP POP DUP4 LT PUSH2 0xA57 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA38 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE8 PC BALANCE PUSH10 0x12682BFAECD9AFE3E6FB 0xBB 0xAB PUSH12 0x7ACF2023FFD8C13C55FACE38 DUP8 SWAP5 CALLVALUE PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
              "sourceMap": "69:3790:11:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;69:3790:11;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600436106100695760003560e01c8063375734d911610043578063375734d91461026f5780633cec30a914610317578063d9f5b829146103ab57610070565b80631e175e961461007557806322b584101461011f57806332b56fa5146101c757610070565b3661007057005b600080fd5b34801561008157600080fd5b5061011d600480360360c081101561009857600080fd5b6001600160a01b0382351691602081013591604082013591908101906080810160608201356401000000008111156100cf57600080fd5b8201836020820111156100e157600080fd5b8035906020019184602083028401116401000000008311171561010357600080fd5b91935091506001600160a01b03813516906020013561043f565b005b34801561012b57600080fd5b5061011d600480360360c081101561014257600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460208302840111640100000000831117156101ad57600080fd5b91935091506001600160a01b0381351690602001356106ba565b3480156101d357600080fd5b5061011d600480360360c08110156101ea57600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561022157600080fd5b82018360208201111561023357600080fd5b8035906020019184602083028401116401000000008311171561025557600080fd5b91935091506001600160a01b0381351690602001356107a3565b34801561027b57600080fd5b5061011d600480360360c081101561029257600080fd5b6001600160a01b0382351691602081013591604082013591908101906080810160608201356401000000008111156102c957600080fd5b8201836020820111156102db57600080fd5b803590602001918460208302840111640100000000831117156102fd57600080fd5b91935091506001600160a01b03813516906020013561088c565b61011d600480360360a081101561032d57600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561035d57600080fd5b82018360208201111561036f57600080fd5b8035906020019184602083028401116401000000008311171561039157600080fd5b91935091506001600160a01b038135169060200135610975565b61011d600480360360a08110156103c157600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156103f157600080fd5b82018360208201111561040357600080fd5b8035906020019184602083028401116401000000008311171561042557600080fd5b91935091506001600160a01b038135169060200135610be7565b60006060886001600160a01b031663181950fd60e01b8989898989896040516024018087815260200186815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b602083106105295780518252601f19909201916020918201910161050a565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610589576040519150601f19603f3d011682016040523d82523d6000602084013e61058e565b606091505b50915091508161059a57fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b38180602001905160208110156105d057600080fd5b81019080805160405193929190846401000000008211156105f057600080fd5b90830190602082018581111561060557600080fd5b825186602082028301116401000000008211171561062257600080fd5b82525081516020918201928201910280838360005b8381101561064f578181015183820152602001610637565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561069c578181015183820152602001610684565b505050509050019250505060405180910390a1505050505050505050565b60006060886001600160a01b0316638803dbee60e01b8989898989896040516024018087815260200186815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051808280519060200190808383602083106105295780518252601f19909201916020918201910161050a565b60006060886001600160a01b031663c78c12cf60e01b8989898989896040516024018087815260200186815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051808280519060200190808383602083106105295780518252601f19909201916020918201910161050a565b60006060886001600160a01b03166338ed173960e01b8989898989896040516024018087815260200186815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051808280519060200190808383602083106105295780518252601f19909201916020918201910161050a565b60006060876001600160a01b0316631fef238960e01b88888888886040516024018086815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b60208310610a575780518252601f199092019160209182019101610a38565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610ab7576040519150601f19603f3d011682016040523d82523d6000602084013e610abc565b606091505b509150915081610ac857fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b3818060200190516020811015610afe57600080fd5b8101908080516040519392919084640100000000821115610b1e57600080fd5b908301906020820185811115610b3357600080fd5b8251866020820283011164010000000082111715610b5057600080fd5b82525081516020918201928201910280838360005b83811015610b7d578181015183820152602001610b65565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610bca578181015183820152602001610bb2565b505050509050019250505060405180910390a15050505050505050565b60006060876001600160a01b03166308e4e89e60e01b88888888886040516024018086815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825286868281815260200192506020028082843760008382015260408051601f909201601f199081169094018281039094018252928352602080820180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909d169c909c178c5292518151919b909a508a995097509550859450879350869250508310610a575780518252601f199092019160209182019101610a3856fea2646970667358221220e858316912682bfaecd9afe3e6fbbbab6b7acf2023ffd8c13c55face3887943464736f6c63430006060033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x69 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x375734D9 GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x375734D9 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x3CEC30A9 EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0xD9F5B829 EQ PUSH2 0x3AB JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x1E175E96 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x22B58410 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0x32B56FA5 EQ PUSH2 0x1C7 JUMPI PUSH2 0x70 JUMP JUMPDEST CALLDATASIZE PUSH2 0x70 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x43F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x18B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6BA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x88C JUMP JUMPDEST PUSH2 0x11D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x32D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x36F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x391 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x975 JUMP JUMPDEST PUSH2 0x11D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x3C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x425 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xBE7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x181950FD PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x529 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x50A JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x589 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x58E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x59A JUMPI INVALID JUMPDEST PUSH32 0x4CC17991E3610E3400E74A8306AA421DAAEE1E3446FA22B490604610999E10B3 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x605 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x622 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x64F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x637 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x69C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x684 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8803DBEE PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x529 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x50A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC78C12CF PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x529 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x50A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38ED1739 PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x529 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x50A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x1FEF2389 PUSH1 0xE0 SHL DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xA57 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA38 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xAB7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xABC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xAC8 JUMPI INVALID JUMPDEST PUSH32 0x4CC17991E3610E3400E74A8306AA421DAAEE1E3446FA22B490604610999E10B3 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0xB1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0xB33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0xB50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB7D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB65 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBCA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xBB2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8E4E89E PUSH1 0xE0 SHL DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F SWAP1 SWAP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND SWAP1 SWAP5 ADD DUP3 DUP2 SUB SWAP1 SWAP5 ADD DUP3 MSTORE SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP14 AND SWAP13 SWAP1 SWAP13 OR DUP13 MSTORE SWAP3 MLOAD DUP2 MLOAD SWAP2 SWAP12 SWAP1 SWAP11 POP DUP11 SWAP10 POP SWAP8 POP SWAP6 POP DUP6 SWAP5 POP DUP8 SWAP4 POP DUP7 SWAP3 POP POP DUP4 LT PUSH2 0xA57 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA38 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE8 PC BALANCE PUSH10 0x12682BFAECD9AFE3E6FB 0xBB 0xAB PUSH12 0x7ACF2023FFD8C13C55FACE38 DUP8 SWAP5 CALLVALUE PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
              "sourceMap": "69:3790:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;2029:622:11;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2029:622:11;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;2029:622:11;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;2029:622:11;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;2029:622:11;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2029:622:11;;-1:-1:-1;2029:622:11;-1:-1:-1;;;;;;2029:622:11;;;;;;;;:::i;:::-;;811:628;;5:9:-1;2:2;;;27:1;24;17:12;2:2;811:628:11;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;811:628:11;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;811:628:11;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;811:628:11;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;811:628:11;;-1:-1:-1;811:628:11;-1:-1:-1;;;;;;811:628:11;;;;;;;;:::i;2657:622::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2657:622:11;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;2657:622:11;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;2657:622:11;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;2657:622:11;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2657:622:11;;-1:-1:-1;2657:622:11;-1:-1:-1;;;;;;2657:622:11;;;;;;;;:::i;177:628::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;177:628:11;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;177:628:11;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;177:628:11;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;177:628:11;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;177:628:11;;-1:-1:-1;177:628:11;-1:-1:-1;;;;;;177:628:11;;;;;;;;:::i;1445:578::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;1445:578:11;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;1445:578:11;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1445:578:11;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1445:578:11;;-1:-1:-1;1445:578:11;-1:-1:-1;;;;;;1445:578:11;;;;;;;;:::i;3285:572::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;3285:572:11;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;3285:572:11;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;3285:572:11;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;3285:572:11;;-1:-1:-1;3285:572:11;-1:-1:-1;;;;;;3285:572:11;;;;;;;;:::i;2029:622::-;2245:12;2259:23;2286:6;-1:-1:-1;;;;;2286:19:11;2359:53;;;2430:9;2457:11;2486:4;;2508:2;2528:8;2319:231;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2319:231:11;-1:-1:-1;;;;;2319:231:11;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2319:231:11;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2319:231:11;;;;-1:-1:-1;;;;;2319:231:11;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2319:231:11;2286:274;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2286:274:11;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;2244:316:11;;;;2577:7;2570:15;;;;2600:44;2619:10;2608:35;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2608:35:11;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;2608:35:11;;421:4:-1;412:14;;;;2608:35:11;;;;;412:14:-1;2608:35:11;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2608:35:11;;;;;;;;;;;2600:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2600:44:11;;;;;;;;;;;;;;;;;2029:622;;;;;;;;;:::o;811:628::-;1030:12;1044:23;1071:6;-1:-1:-1;;;;;1071:19:11;1144:56;;;1218:9;1245:11;1274:4;;1296:2;1316:8;1104:234;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1104:234:11;-1:-1:-1;;;;;1104:234:11;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1104:234:11;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1104:234:11;;;;-1:-1:-1;;;;;1104:234:11;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;1104:234:11;1071:277;;;;;;;;;;;;;66:2:-1;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;2657:622:11;2873:12;2887:23;2914:6;-1:-1:-1;;;;;2914:19:11;2987:53;;;3058:8;3084:12;3114:4;;3136:2;3156:8;2947:231;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2947:231:11;-1:-1:-1;;;;;2947:231:11;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2947:231:11;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2947:231:11;;;;-1:-1:-1;;;;;2947:231:11;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2947:231:11;2914:274;;;;;;;;;;;;;66:2:-1;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;177:628:11;396:12;410:23;437:6;-1:-1:-1;;;;;437:19:11;510:56;;;584:8;610:12;640:4;;662:2;682:8;470:234;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;470:234:11;-1:-1:-1;;;;;470:234:11;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;470:234:11;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;470:234:11;;;;-1:-1:-1;;;;;470:234:11;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;470:234:11;437:277;;;;;;;;;;;;;66:2:-1;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;1445:578:11;1643:12;1657:23;1684:6;-1:-1:-1;;;;;1684:19:11;1757:53;;;1828:12;1858:4;;1880:2;1900:8;1717:205;;;;;;;;;;;;;;-1:-1:-1;;;;;1717:205:11;-1:-1:-1;;;;;1717:205:11;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1717:205:11;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1717:205:11;;;;-1:-1:-1;;;;;1717:205:11;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;1717:205:11;1684:248;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1684:248:11;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1642:290:11;;;;1949:7;1942:15;;;;1972:44;1991:10;1980:35;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1980:35:11;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;1980:35:11;;421:4:-1;412:14;;;;1980:35:11;;;;;412:14:-1;1980:35:11;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1980:35:11;;;;;;;;;;;1972:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1972:44:11;;;;;;;;;;;;;;;;;1445:578;;;;;;;;:::o;3285:572::-;3480:12;3494:23;3521:6;-1:-1:-1;;;;;3521:19:11;3594:53;;;3665:9;3692:4;;3714:2;3734:8;3554:202;;;;;;;;;;;;;;-1:-1:-1;;;;;3554:202:11;-1:-1:-1;;;;;3554:202:11;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;3554:202:11;;;137:4:-1;117:14;;;-1:-1;;113:30;;;157:16;;;26:21;;;22:32;;;6:49;;3554:202:11;;;49:4:-1;25:18;;;61:17;;-1:-1;;;;;182:15;3554:202:11;;;;179:29:-1;;;;160:49;;3521:245:11;;;;3554:202;;3521:245;;-1:-1:-1;3521:245:11;;-1:-1:-1;25:18;-1:-1;3521:245:11;-1:-1:-1;3521:245:11;;-1:-1:-1;3521:245:11;;-1:-1:-1;25:18;;-1:-1;;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;"
            },
            "methodIdentifiers": {
              "swapExactSYSForTokens(address,uint256,address[],address,uint256)": "3cec30a9",
              "swapExactTokensForSYS(address,uint256,uint256,address[],address,uint256)": "32b56fa5",
              "swapExactTokensForTokens(address,uint256,uint256,address[],address,uint256)": "375734d9",
              "swapSYSForExactTokens(address,uint256,address[],address,uint256)": "d9f5b829",
              "swapTokensForExactSYS(address,uint256,uint256,address[],address,uint256)": "1e175e96",
              "swapTokensForExactTokens(address,uint256,uint256,address[],address,uint256)": "22b58410"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"Amounts\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactSYSForTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForSYS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapSYSForExactTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactSYS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/pegasys-periphery/test/RouterEventEmitter.sol\":\"RouterEventEmitter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"contracts/pegasys-periphery/interfaces/IPegasysRouter.sol\":{\"keccak256\":\"0xcc41828b05d6b73c62df9cfd8bf094d2b2e8824e4a6e83e91e3b6ad72fa91fa9\",\"urls\":[\"bzz-raw://a4414fbfe3a224fbdf46838cb692d148414485aa68ba926c1b02433544fcc3cf\",\"dweb:/ipfs/QmeR8UNF4NnLVex7CeU2sSd2eij9F5TPvmXUCwhepZqnqr\"]},\"contracts/pegasys-periphery/test/RouterEventEmitter.sol\":{\"keccak256\":\"0x27fb049f4ed34591341d55a61f7ce970e8c4c235062cab452a35c1c3e050ebf7\",\"urls\":[\"bzz-raw://c6e6f8ac4e50804b22edbb554ded54f213a6d29f1ddd1a4e62bbbf646749faa4\",\"dweb:/ipfs/QmQq2F4a2Mh2Ets4PrdYMxcY5zHqbat5Eq8oHzppXJ7ybC\"]}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          }
        }
      }
    },
    "sources": {
      "contracts/pegasys-core/interfaces/IPegasysFactory.sol": {
        "ast": {
          "absolutePath": "contracts/pegasys-core/interfaces/IPegasysFactory.sol",
          "exportedSymbols": {
            "IPegasysFactory": [
              62
            ]
          },
          "id": 63,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 62,
              "linearizedBaseContracts": [
                62
              ],
              "name": "IPegasysFactory",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 11,
                  "name": "PairCreated",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 10,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "token0",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11,
                        "src": "117:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "117:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "token1",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11,
                        "src": "149:22:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "149:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "pair",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11,
                        "src": "181:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "181:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 11,
                        "src": "203:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "203:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "107:109:0"
                  },
                  "src": "90:127:0"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "017e7e58",
                  "id": 16,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "feeTo",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 12,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "237:2:0"
                  },
                  "returnParameters": {
                    "id": 15,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 16,
                        "src": "263:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "263:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "262:9:0"
                  },
                  "scope": 62,
                  "src": "223:49:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "094b7415",
                  "id": 21,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "feeToSetter",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 17,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "298:2:0"
                  },
                  "returnParameters": {
                    "id": 20,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 21,
                        "src": "324:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "324:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "323:9:0"
                  },
                  "scope": 62,
                  "src": "278:55:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "e6a43905",
                  "id": 30,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPair",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 26,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23,
                        "mutability": "mutable",
                        "name": "tokenA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 30,
                        "src": "356:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "356:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25,
                        "mutability": "mutable",
                        "name": "tokenB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 30,
                        "src": "372:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "372:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "355:32:0"
                  },
                  "returnParameters": {
                    "id": 29,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28,
                        "mutability": "mutable",
                        "name": "pair",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 30,
                        "src": "435:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "435:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "434:14:0"
                  },
                  "scope": 62,
                  "src": "339:110:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "1e3dd18b",
                  "id": 37,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allPairs",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 33,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 37,
                        "src": "473:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "473:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "472:9:0"
                  },
                  "returnParameters": {
                    "id": 36,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 35,
                        "mutability": "mutable",
                        "name": "pair",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 37,
                        "src": "505:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 34,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "505:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "504:14:0"
                  },
                  "scope": 62,
                  "src": "455:64:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "574f2ba3",
                  "id": 42,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allPairsLength",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 38,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "548:2:0"
                  },
                  "returnParameters": {
                    "id": 41,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 42,
                        "src": "574:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 39,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "574:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "573:9:0"
                  },
                  "scope": 62,
                  "src": "525:58:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "c9c65396",
                  "id": 51,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "createPair",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 47,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 44,
                        "mutability": "mutable",
                        "name": "tokenA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 51,
                        "src": "609:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "609:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 46,
                        "mutability": "mutable",
                        "name": "tokenB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 51,
                        "src": "625:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 45,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "625:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "608:32:0"
                  },
                  "returnParameters": {
                    "id": 50,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 49,
                        "mutability": "mutable",
                        "name": "pair",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 51,
                        "src": "675:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 48,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "675:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "674:14:0"
                  },
                  "scope": 62,
                  "src": "589:100:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "f46901ed",
                  "id": 56,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setFeeTo",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 54,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 53,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 56,
                        "src": "713:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 52,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "713:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "712:9:0"
                  },
                  "returnParameters": {
                    "id": 55,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "730:0:0"
                  },
                  "scope": 62,
                  "src": "695:36:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "a2e74af6",
                  "id": 61,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setFeeToSetter",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 59,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 58,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 61,
                        "src": "761:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 57,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "761:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "760:9:0"
                  },
                  "returnParameters": {
                    "id": 60,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "778:0:0"
                  },
                  "scope": 62,
                  "src": "737:42:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 63,
              "src": "58:723:0"
            }
          ],
          "src": "32:750:0"
        },
        "id": 0
      },
      "contracts/pegasys-core/interfaces/IPegasysPair.sol": {
        "ast": {
          "absolutePath": "contracts/pegasys-core/interfaces/IPegasysPair.sol",
          "exportedSymbols": {
            "IPegasysPair": [
              304
            ]
          },
          "id": 305,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 64,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:1"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 304,
              "linearizedBaseContracts": [
                304
              ],
              "name": "IPegasysPair",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 72,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 71,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 66,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 72,
                        "src": "111:21:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 65,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "111:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 68,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 72,
                        "src": "142:23:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 67,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "142:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 70,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 72,
                        "src": "175:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 69,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "175:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "101:93:1"
                  },
                  "src": "87:108:1"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 80,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 79,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 74,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 80,
                        "src": "215:20:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 73,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "215:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 76,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 80,
                        "src": "237:18:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 75,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "237:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 78,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 80,
                        "src": "257:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 77,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "257:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "214:57:1"
                  },
                  "src": "200:72:1"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "06fdde03",
                  "id": 85,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 81,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "291:2:1"
                  },
                  "returnParameters": {
                    "id": 84,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 83,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 85,
                        "src": "317:13:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 82,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "317:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "316:15:1"
                  },
                  "scope": 304,
                  "src": "278:54:1",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "95d89b41",
                  "id": 90,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 86,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "353:2:1"
                  },
                  "returnParameters": {
                    "id": 89,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 88,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 90,
                        "src": "379:13:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 87,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "379:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "378:15:1"
                  },
                  "scope": 304,
                  "src": "338:56:1",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "313ce567",
                  "id": 95,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 91,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "417:2:1"
                  },
                  "returnParameters": {
                    "id": 94,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 93,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 95,
                        "src": "443:5:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 92,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "443:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "442:7:1"
                  },
                  "scope": 304,
                  "src": "400:50:1",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "18160ddd",
                  "id": 100,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 96,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "476:2:1"
                  },
                  "returnParameters": {
                    "id": 99,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 98,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 100,
                        "src": "502:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 97,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "502:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "501:9:1"
                  },
                  "scope": 304,
                  "src": "456:55:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "70a08231",
                  "id": 107,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 103,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 102,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 107,
                        "src": "536:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 101,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "536:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "535:15:1"
                  },
                  "returnParameters": {
                    "id": 106,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 105,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 107,
                        "src": "574:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 104,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "574:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "573:9:1"
                  },
                  "scope": 304,
                  "src": "517:66:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "dd62ed3e",
                  "id": 116,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 112,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 109,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 116,
                        "src": "608:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 108,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "608:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 111,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 116,
                        "src": "623:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 110,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "623:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "607:32:1"
                  },
                  "returnParameters": {
                    "id": 115,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 114,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 116,
                        "src": "687:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 113,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "687:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "686:9:1"
                  },
                  "scope": 304,
                  "src": "589:107:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "095ea7b3",
                  "id": 125,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 121,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 118,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 125,
                        "src": "719:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 117,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "719:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 120,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 125,
                        "src": "736:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 119,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "736:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "718:32:1"
                  },
                  "returnParameters": {
                    "id": 124,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 123,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 125,
                        "src": "769:4:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 122,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "769:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "768:6:1"
                  },
                  "scope": 304,
                  "src": "702:73:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "a9059cbb",
                  "id": 134,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 130,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 127,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 134,
                        "src": "799:10:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 126,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "799:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 129,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 134,
                        "src": "811:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 128,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "811:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "798:27:1"
                  },
                  "returnParameters": {
                    "id": 133,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 132,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 134,
                        "src": "844:4:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 131,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "844:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "843:6:1"
                  },
                  "scope": 304,
                  "src": "781:69:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "23b872dd",
                  "id": 145,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 141,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 136,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 145,
                        "src": "887:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 135,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "887:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 138,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 145,
                        "src": "909:10:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 137,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "909:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 140,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 145,
                        "src": "929:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 139,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "929:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "877:71:1"
                  },
                  "returnParameters": {
                    "id": 144,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 143,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 145,
                        "src": "967:4:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 142,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "967:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "966:6:1"
                  },
                  "scope": 304,
                  "src": "856:117:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "3644e515",
                  "id": 150,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "DOMAIN_SEPARATOR",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 146,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1004:2:1"
                  },
                  "returnParameters": {
                    "id": 149,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 148,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 150,
                        "src": "1030:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 147,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1030:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1029:9:1"
                  },
                  "scope": 304,
                  "src": "979:60:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "30adf81f",
                  "id": 155,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "PERMIT_TYPEHASH",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 151,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1069:2:1"
                  },
                  "returnParameters": {
                    "id": 154,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 153,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 155,
                        "src": "1095:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 152,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1095:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1094:9:1"
                  },
                  "scope": 304,
                  "src": "1045:59:1",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "7ecebe00",
                  "id": 162,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "nonces",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 158,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 157,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 162,
                        "src": "1126:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 156,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1126:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1125:15:1"
                  },
                  "returnParameters": {
                    "id": 161,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 160,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 162,
                        "src": "1164:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 159,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1164:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1163:9:1"
                  },
                  "scope": 304,
                  "src": "1110:63:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d505accf",
                  "id": 179,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 177,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 164,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 179,
                        "src": "1204:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 163,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1204:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 166,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 179,
                        "src": "1227:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 165,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1227:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 168,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 179,
                        "src": "1252:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 167,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1252:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 170,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 179,
                        "src": "1275:16:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 169,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1275:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 172,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 179,
                        "src": "1301:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 171,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1301:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 174,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 179,
                        "src": "1318:9:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 173,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1318:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 176,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 179,
                        "src": "1337:9:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 175,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1337:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1194:158:1"
                  },
                  "returnParameters": {
                    "id": 178,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1361:0:1"
                  },
                  "scope": 304,
                  "src": "1179:183:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 187,
                  "name": "Mint",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 186,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 181,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 187,
                        "src": "1379:22:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 180,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1379:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 183,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount0",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 187,
                        "src": "1403:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 182,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1403:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 185,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount1",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 187,
                        "src": "1420:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 184,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1420:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1378:58:1"
                  },
                  "src": "1368:69:1"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 197,
                  "name": "Burn",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 196,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 189,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 197,
                        "src": "1462:22:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 188,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1462:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 191,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount0",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 197,
                        "src": "1494:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 190,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1494:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 193,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount1",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 197,
                        "src": "1519:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 192,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1519:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 195,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 197,
                        "src": "1544:18:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 194,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1544:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1452:116:1"
                  },
                  "src": "1442:127:1"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 211,
                  "name": "Swap",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 210,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 199,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 211,
                        "src": "1594:22:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 198,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1594:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 201,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount0In",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 211,
                        "src": "1626:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 200,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1626:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 203,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount1In",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 211,
                        "src": "1653:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 202,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1653:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 205,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount0Out",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 211,
                        "src": "1680:18:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 204,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1680:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 207,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount1Out",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 211,
                        "src": "1708:18:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 206,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1708:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 209,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 211,
                        "src": "1736:18:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 208,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1736:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1584:176:1"
                  },
                  "src": "1574:187:1"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 217,
                  "name": "Sync",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 216,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 213,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "reserve0",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 217,
                        "src": "1777:16:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 212,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "1777:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 215,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "reserve1",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 217,
                        "src": "1795:16:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 214,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "1795:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1776:36:1"
                  },
                  "src": "1766:47:1"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "ba9a7a56",
                  "id": 222,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "MINIMUM_LIQUIDITY",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 218,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1845:2:1"
                  },
                  "returnParameters": {
                    "id": 221,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 220,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 222,
                        "src": "1871:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 219,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1871:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1870:9:1"
                  },
                  "scope": 304,
                  "src": "1819:61:1",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "c45a0155",
                  "id": 227,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "factory",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 223,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1902:2:1"
                  },
                  "returnParameters": {
                    "id": 226,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 225,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 227,
                        "src": "1928:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 224,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1928:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1927:9:1"
                  },
                  "scope": 304,
                  "src": "1886:51:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "0dfe1681",
                  "id": 232,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "token0",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 228,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1958:2:1"
                  },
                  "returnParameters": {
                    "id": 231,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 230,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 232,
                        "src": "1984:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 229,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1984:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1983:9:1"
                  },
                  "scope": 304,
                  "src": "1943:50:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d21220a7",
                  "id": 237,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "token1",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 233,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2014:2:1"
                  },
                  "returnParameters": {
                    "id": 236,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 235,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 237,
                        "src": "2040:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 234,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2040:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2039:9:1"
                  },
                  "scope": 304,
                  "src": "1999:50:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "0902f1ac",
                  "id": 246,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReserves",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 238,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2075:2:1"
                  },
                  "returnParameters": {
                    "id": 245,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 240,
                        "mutability": "mutable",
                        "name": "reserve0",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 246,
                        "src": "2138:16:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 239,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "2138:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 242,
                        "mutability": "mutable",
                        "name": "reserve1",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 246,
                        "src": "2168:16:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 241,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "2168:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 244,
                        "mutability": "mutable",
                        "name": "blockTimestampLast",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 246,
                        "src": "2198:25:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 243,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2198:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2124:109:1"
                  },
                  "scope": 304,
                  "src": "2055:179:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "5909c0d5",
                  "id": 251,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "price0CumulativeLast",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 247,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2269:2:1"
                  },
                  "returnParameters": {
                    "id": 250,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 249,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 251,
                        "src": "2295:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 248,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2295:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2294:9:1"
                  },
                  "scope": 304,
                  "src": "2240:64:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "5a3d5493",
                  "id": 256,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "price1CumulativeLast",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 252,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2339:2:1"
                  },
                  "returnParameters": {
                    "id": 255,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 254,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 256,
                        "src": "2365:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 253,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2365:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2364:9:1"
                  },
                  "scope": 304,
                  "src": "2310:64:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "7464fc3d",
                  "id": 261,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "kLast",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 257,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2394:2:1"
                  },
                  "returnParameters": {
                    "id": 260,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 259,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 261,
                        "src": "2420:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 258,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2420:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2419:9:1"
                  },
                  "scope": 304,
                  "src": "2380:49:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "6a627842",
                  "id": 268,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 264,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 263,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 268,
                        "src": "2449:10:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 262,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2449:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2448:12:1"
                  },
                  "returnParameters": {
                    "id": 267,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 266,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 268,
                        "src": "2479:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 265,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2479:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2478:19:1"
                  },
                  "scope": 304,
                  "src": "2435:63:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "89afcb44",
                  "id": 277,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 271,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 270,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 277,
                        "src": "2518:10:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 269,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2518:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2517:12:1"
                  },
                  "returnParameters": {
                    "id": 276,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 273,
                        "mutability": "mutable",
                        "name": "amount0",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 277,
                        "src": "2564:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 272,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2564:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 275,
                        "mutability": "mutable",
                        "name": "amount1",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 277,
                        "src": "2581:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 274,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2581:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2563:34:1"
                  },
                  "scope": 304,
                  "src": "2504:94:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "022c0d9f",
                  "id": 288,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swap",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 286,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 279,
                        "mutability": "mutable",
                        "name": "amount0Out",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 288,
                        "src": "2627:18:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 278,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2627:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 281,
                        "mutability": "mutable",
                        "name": "amount1Out",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 288,
                        "src": "2655:18:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 280,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2655:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 283,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 288,
                        "src": "2683:10:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 282,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2683:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 285,
                        "mutability": "mutable",
                        "name": "data",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 288,
                        "src": "2703:19:1",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 284,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2703:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2617:111:1"
                  },
                  "returnParameters": {
                    "id": 287,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2737:0:1"
                  },
                  "scope": 304,
                  "src": "2604:134:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "bc25cf77",
                  "id": 293,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "skim",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 291,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 290,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 293,
                        "src": "2758:10:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 289,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2758:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2757:12:1"
                  },
                  "returnParameters": {
                    "id": 292,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2778:0:1"
                  },
                  "scope": 304,
                  "src": "2744:35:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "fff6cae9",
                  "id": 296,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sync",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 294,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2798:2:1"
                  },
                  "returnParameters": {
                    "id": 295,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2809:0:1"
                  },
                  "scope": 304,
                  "src": "2785:25:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "485cc955",
                  "id": 303,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "initialize",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 301,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 298,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 303,
                        "src": "2836:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 297,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2836:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 300,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 303,
                        "src": "2845:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 299,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2845:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2835:18:1"
                  },
                  "returnParameters": {
                    "id": 302,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2862:0:1"
                  },
                  "scope": 304,
                  "src": "2816:47:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 305,
              "src": "58:2807:1"
            }
          ],
          "src": "32:2834:1"
        },
        "id": 1
      },
      "contracts/pegasys-lib/libraries/TransferHelper.sol": {
        "ast": {
          "absolutePath": "contracts/pegasys-lib/libraries/TransferHelper.sol",
          "exportedSymbols": {
            "TransferHelper": [
              464
            ]
          },
          "id": 465,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 306,
              "literals": [
                "solidity",
                ">=",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:2"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 464,
              "linearizedBaseContracts": [
                464
              ],
              "name": "TransferHelper",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 348,
                    "nodeType": "Block",
                    "src": "314:341:2",
                    "statements": [
                      {
                        "assignments": [
                          316,
                          318
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 316,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 348,
                            "src": "390:12:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 315,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "390:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 318,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 348,
                            "src": "404:17:2",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 317,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "404:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 328,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30783039356561376233",
                                  "id": 323,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "472:10:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_157198259_by_1",
                                    "typeString": "int_const 157198259"
                                  },
                                  "value": "0x095ea7b3"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 324,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 310,
                                  "src": "484:2:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 325,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 312,
                                  "src": "488:5:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_157198259_by_1",
                                    "typeString": "int_const 157198259"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 321,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "449:3:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 322,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "449:22:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 326,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "449:45:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 319,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 308,
                              "src": "425:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 320,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "425:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "425:79:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "389:115:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 344,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 330,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 316,
                                "src": "535:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 342,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 334,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 331,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 318,
                                          "src": "547:4:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 332,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "547:11:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 333,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "562:1:2",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "547:16:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 337,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 318,
                                          "src": "578:4:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "id": 339,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "585:4:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bool_$",
                                                "typeString": "type(bool)"
                                              },
                                              "typeName": {
                                                "id": 338,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "585:4:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            }
                                          ],
                                          "id": 340,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "584:6:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bool_$",
                                            "typeString": "type(bool)"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_type$_t_bool_$",
                                            "typeString": "type(bool)"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 335,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "567:3:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 336,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "decode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "567:10:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 341,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "567:24:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "547:44:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 343,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "546:46:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "535:57:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5472616e7366657248656c7065723a20415050524f56455f4641494c4544",
                              "id": 345,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "606:32:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3e27be550bb5367a6d8a8b2dd8b5c52ee0710d2d5b26de50062207957ab5bd00",
                                "typeString": "literal_string \"TransferHelper: APPROVE_FAILED\""
                              },
                              "value": "TransferHelper: APPROVE_FAILED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3e27be550bb5367a6d8a8b2dd8b5c52ee0710d2d5b26de50062207957ab5bd00",
                                "typeString": "literal_string \"TransferHelper: APPROVE_FAILED\""
                              }
                            ],
                            "id": 329,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "514:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "514:134:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 347,
                        "nodeType": "ExpressionStatement",
                        "src": "514:134:2"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 349,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeApprove",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 313,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 308,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 349,
                        "src": "242:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 307,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "242:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 310,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 349,
                        "src": "265:10:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 309,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "265:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 312,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 349,
                        "src": "285:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 311,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "285:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "232:72:2"
                  },
                  "returnParameters": {
                    "id": 314,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "314:0:2"
                  },
                  "scope": 464,
                  "src": "212:443:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 391,
                    "nodeType": "Block",
                    "src": "764:343:2",
                    "statements": [
                      {
                        "assignments": [
                          359,
                          361
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 359,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 391,
                            "src": "841:12:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 358,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "841:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 361,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 391,
                            "src": "855:17:2",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 360,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "855:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 371,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30786139303539636262",
                                  "id": 366,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "923:10:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2835717307_by_1",
                                    "typeString": "int_const 2835717307"
                                  },
                                  "value": "0xa9059cbb"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 367,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 353,
                                  "src": "935:2:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 368,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 355,
                                  "src": "939:5:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_2835717307_by_1",
                                    "typeString": "int_const 2835717307"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 364,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "900:3:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 365,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "900:22:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 369,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "900:45:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 362,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 351,
                              "src": "876:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 363,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "876:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "876:79:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "840:115:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 387,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 373,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 359,
                                "src": "986:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 385,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 377,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 374,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 361,
                                          "src": "998:4:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 375,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "998:11:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 376,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1013:1:2",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "998:16:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 380,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 361,
                                          "src": "1029:4:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "id": 382,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "1036:4:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bool_$",
                                                "typeString": "type(bool)"
                                              },
                                              "typeName": {
                                                "id": 381,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1036:4:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            }
                                          ],
                                          "id": 383,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "1035:6:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bool_$",
                                            "typeString": "type(bool)"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_type$_t_bool_$",
                                            "typeString": "type(bool)"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 378,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "1018:3:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 379,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "decode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "1018:10:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 384,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1018:24:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "998:44:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 386,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "997:46:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "986:57:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5472616e7366657248656c7065723a205452414e534645525f4641494c4544",
                              "id": 388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1057:33:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426",
                                "typeString": "literal_string \"TransferHelper: TRANSFER_FAILED\""
                              },
                              "value": "TransferHelper: TRANSFER_FAILED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426",
                                "typeString": "literal_string \"TransferHelper: TRANSFER_FAILED\""
                              }
                            ],
                            "id": 372,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "965:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "965:135:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 390,
                        "nodeType": "ExpressionStatement",
                        "src": "965:135:2"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 392,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 356,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 351,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 392,
                        "src": "692:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 350,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "692:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 353,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 392,
                        "src": "715:10:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 352,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "715:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 355,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 392,
                        "src": "735:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 354,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "735:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "682:72:2"
                  },
                  "returnParameters": {
                    "id": 357,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "764:0:2"
                  },
                  "scope": 464,
                  "src": "661:446:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 437,
                    "nodeType": "Block",
                    "src": "1242:366:2",
                    "statements": [
                      {
                        "assignments": [
                          404,
                          406
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 404,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 437,
                            "src": "1331:12:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 403,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1331:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 406,
                            "mutability": "mutable",
                            "name": "data",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 437,
                            "src": "1345:17:2",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 405,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1345:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 417,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30783233623837326464",
                                  "id": 411,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1413:10:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_599290589_by_1",
                                    "typeString": "int_const 599290589"
                                  },
                                  "value": "0x23b872dd"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 412,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 396,
                                  "src": "1425:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 413,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 398,
                                  "src": "1431:2:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 414,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 400,
                                  "src": "1435:5:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_599290589_by_1",
                                    "typeString": "int_const 599290589"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 409,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1390:3:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 410,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1390:22:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 415,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1390:51:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 407,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 394,
                              "src": "1366:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1366:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1366:85:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1330:121:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 433,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 419,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 404,
                                "src": "1482:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 431,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 423,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 420,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 406,
                                          "src": "1494:4:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 421,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "1494:11:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 422,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1509:1:2",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "1494:16:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 426,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 406,
                                          "src": "1525:4:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "id": 428,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "1532:4:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bool_$",
                                                "typeString": "type(bool)"
                                              },
                                              "typeName": {
                                                "id": 427,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1532:4:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            }
                                          ],
                                          "id": 429,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "1531:6:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bool_$",
                                            "typeString": "type(bool)"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_type$_t_bool_$",
                                            "typeString": "type(bool)"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 424,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "1514:3:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 425,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "decode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "1514:10:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 430,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1514:24:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "1494:44:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 432,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1493:46:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1482:57:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544",
                              "id": 434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1553:38:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18",
                                "typeString": "literal_string \"TransferHelper: TRANSFER_FROM_FAILED\""
                              },
                              "value": "TransferHelper: TRANSFER_FROM_FAILED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18",
                                "typeString": "literal_string \"TransferHelper: TRANSFER_FROM_FAILED\""
                              }
                            ],
                            "id": 418,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1461:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1461:140:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 436,
                        "nodeType": "ExpressionStatement",
                        "src": "1461:140:2"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 438,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 401,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 394,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 438,
                        "src": "1148:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 393,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1148:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 396,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 438,
                        "src": "1171:12:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 395,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1171:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 398,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 438,
                        "src": "1193:10:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 397,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1193:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 400,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 438,
                        "src": "1213:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 399,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1213:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1138:94:2"
                  },
                  "returnParameters": {
                    "id": 402,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1242:0:2"
                  },
                  "scope": 464,
                  "src": "1113:495:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 462,
                    "nodeType": "Block",
                    "src": "1675:136:2",
                    "statements": [
                      {
                        "assignments": [
                          446,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 446,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 462,
                            "src": "1686:12:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 445,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1686:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 456,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 453,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1736:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 452,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "1726:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                },
                                "typeName": {
                                  "id": 451,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1730:5:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage_ptr",
                                    "typeString": "bytes"
                                  }
                                }
                              },
                              "id": 454,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1726:12:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 447,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 440,
                                "src": "1704:2:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 448,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1704:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 450,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "argumentTypes": null,
                                "id": 449,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 442,
                                "src": "1719:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "1704:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1704:35:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1685:54:2"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 458,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 446,
                              "src": "1757:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "5472616e7366657248656c7065723a205359535f5452414e534645525f4641494c4544",
                              "id": 459,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1766:37:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_aef172756ae2ef0029c63def35270741cfe59218f5550b17d32493b5d1fd8bc8",
                                "typeString": "literal_string \"TransferHelper: SYS_TRANSFER_FAILED\""
                              },
                              "value": "TransferHelper: SYS_TRANSFER_FAILED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_aef172756ae2ef0029c63def35270741cfe59218f5550b17d32493b5d1fd8bc8",
                                "typeString": "literal_string \"TransferHelper: SYS_TRANSFER_FAILED\""
                              }
                            ],
                            "id": 457,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1749:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1749:55:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 461,
                        "nodeType": "ExpressionStatement",
                        "src": "1749:55:2"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 463,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferSYS",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 443,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 440,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 463,
                        "src": "1639:10:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 439,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1639:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 442,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 463,
                        "src": "1651:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 441,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1651:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1638:27:2"
                  },
                  "returnParameters": {
                    "id": 444,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1675:0:2"
                  },
                  "scope": 464,
                  "src": "1614:197:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 465,
              "src": "183:1630:2"
            }
          ],
          "src": "46:1768:2"
        },
        "id": 2
      },
      "contracts/pegasys-periphery/PegasysRouter.sol": {
        "ast": {
          "absolutePath": "contracts/pegasys-periphery/PegasysRouter.sol",
          "exportedSymbols": {
            "PegasysRouter": [
              2502
            ]
          },
          "id": 2503,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 466,
              "literals": [
                "solidity",
                "=",
                "0.6",
                ".6"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:3"
            },
            {
              "absolutePath": "contracts/pegasys-core/interfaces/IPegasysFactory.sol",
              "file": "../pegasys-core/interfaces/IPegasysFactory.sol",
              "id": 467,
              "nodeType": "ImportDirective",
              "scope": 2503,
              "sourceUnit": 63,
              "src": "25:56:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pegasys-lib/libraries/TransferHelper.sol",
              "file": "../pegasys-lib/libraries/TransferHelper.sol",
              "id": 468,
              "nodeType": "ImportDirective",
              "scope": 2503,
              "sourceUnit": 465,
              "src": "82:53:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pegasys-periphery/interfaces/IPegasysRouter.sol",
              "file": "./interfaces/IPegasysRouter.sol",
              "id": 469,
              "nodeType": "ImportDirective",
              "scope": 2503,
              "sourceUnit": 2977,
              "src": "137:41:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pegasys-periphery/libraries/PegasysLibrary.sol",
              "file": "./libraries/PegasysLibrary.sol",
              "id": 470,
              "nodeType": "ImportDirective",
              "scope": 2503,
              "sourceUnit": 3477,
              "src": "179:40:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pegasys-periphery/libraries/SafeMath.sol",
              "file": "./libraries/SafeMath.sol",
              "id": 471,
              "nodeType": "ImportDirective",
              "scope": 2503,
              "sourceUnit": 3575,
              "src": "220:34:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pegasys-periphery/interfaces/IERC20.sol",
              "file": "./interfaces/IERC20.sol",
              "id": 472,
              "nodeType": "ImportDirective",
              "scope": 2503,
              "sourceUnit": 2587,
              "src": "255:33:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pegasys-periphery/interfaces/IWSYS.sol",
              "file": "./interfaces/IWSYS.sol",
              "id": 473,
              "nodeType": "ImportDirective",
              "scope": 2503,
              "sourceUnit": 3004,
              "src": "289:32:3",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 474,
                    "name": "IPegasysRouter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2976,
                    "src": "349:14:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPegasysRouter_$2976",
                      "typeString": "contract IPegasysRouter"
                    }
                  },
                  "id": 475,
                  "nodeType": "InheritanceSpecifier",
                  "src": "349:14:3"
                }
              ],
              "contractDependencies": [
                2976
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 2502,
              "linearizedBaseContracts": [
                2502,
                2976
              ],
              "name": "PegasysRouter",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 478,
                  "libraryName": {
                    "contractScope": null,
                    "id": 476,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3574,
                    "src": "376:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$3574",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "370:27:3",
                  "typeName": {
                    "id": 477,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "389:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "baseFunctions": [
                    2593
                  ],
                  "constant": false,
                  "functionSelector": "c45a0155",
                  "id": 481,
                  "mutability": "immutable",
                  "name": "factory",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 480,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "428:8:3"
                  },
                  "scope": 2502,
                  "src": "403:41:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 479,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "403:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2598
                  ],
                  "constant": false,
                  "functionSelector": "08b0b435",
                  "id": 484,
                  "mutability": "immutable",
                  "name": "WSYS",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 483,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "475:8:3"
                  },
                  "scope": 2502,
                  "src": "450:38:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 482,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "450:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 497,
                    "nodeType": "Block",
                    "src": "529:90:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 492,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 489,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 486,
                                "src": "547:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 490,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "559:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 491,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "559:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "547:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50656761737973526f757465723a2045585049524544",
                              "id": 493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "576:24:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a134af5da08b10908dd6b0c81278a1a8845730c5f51d18b5541f5c33230b8fe7",
                                "typeString": "literal_string \"PegasysRouter: EXPIRED\""
                              },
                              "value": "PegasysRouter: EXPIRED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a134af5da08b10908dd6b0c81278a1a8845730c5f51d18b5541f5c33230b8fe7",
                                "typeString": "literal_string \"PegasysRouter: EXPIRED\""
                              }
                            ],
                            "id": 488,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "539:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "539:62:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 495,
                        "nodeType": "ExpressionStatement",
                        "src": "539:62:3"
                      },
                      {
                        "id": 496,
                        "nodeType": "PlaceholderStatement",
                        "src": "611:1:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 498,
                  "name": "ensure",
                  "nodeType": "ModifierDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 487,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 486,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 498,
                        "src": "511:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 485,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "511:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "510:18:3"
                  },
                  "src": "495:124:3",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 513,
                    "nodeType": "Block",
                    "src": "677:57:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 507,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 505,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 481,
                            "src": "687:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 506,
                            "name": "_factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 500,
                            "src": "697:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "687:18:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 508,
                        "nodeType": "ExpressionStatement",
                        "src": "687:18:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 509,
                            "name": "WSYS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 484,
                            "src": "715:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 510,
                            "name": "_WSYS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 502,
                            "src": "722:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "715:12:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 512,
                        "nodeType": "ExpressionStatement",
                        "src": "715:12:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 514,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 503,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 500,
                        "mutability": "mutable",
                        "name": "_factory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 514,
                        "src": "637:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 499,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "637:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 502,
                        "mutability": "mutable",
                        "name": "_WSYS",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 514,
                        "src": "655:13:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 501,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "655:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "636:33:3"
                  },
                  "returnParameters": {
                    "id": 504,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "677:0:3"
                  },
                  "scope": 2502,
                  "src": "625:109:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 524,
                    "nodeType": "Block",
                    "src": "767:98:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 518,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "784:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "784:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 520,
                                "name": "WSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 484,
                                "src": "798:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "784:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 517,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "777:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "777:26:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 523,
                        "nodeType": "ExpressionStatement",
                        "src": "777:26:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 525,
                  "implemented": true,
                  "kind": "receive",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 515,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "747:2:3"
                  },
                  "returnParameters": {
                    "id": 516,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "767:0:3"
                  },
                  "scope": 2502,
                  "src": "740:125:3",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 655,
                    "nodeType": "Block",
                    "src": "1159:1424:3",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 555,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 548,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 527,
                                "src": "1257:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 549,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 529,
                                "src": "1265:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 545,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 481,
                                    "src": "1240:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 544,
                                  "name": "IPegasysFactory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 62,
                                  "src": "1224:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IPegasysFactory_$62_$",
                                    "typeString": "type(contract IPegasysFactory)"
                                  }
                                },
                                "id": 546,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1224:24:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPegasysFactory_$62",
                                  "typeString": "contract IPegasysFactory"
                                }
                              },
                              "id": 547,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getPair",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 30,
                              "src": "1224:32:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address) view external returns (address)"
                              }
                            },
                            "id": 550,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1224:48:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 553,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1284:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1276:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 551,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1276:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 554,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1276:10:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1224:62:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 565,
                        "nodeType": "IfStatement",
                        "src": "1220:144:3",
                        "trueBody": {
                          "id": 564,
                          "nodeType": "Block",
                          "src": "1288:76:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 560,
                                    "name": "tokenA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 527,
                                    "src": "1338:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 561,
                                    "name": "tokenB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 529,
                                    "src": "1346:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 557,
                                        "name": "factory",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 481,
                                        "src": "1318:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 556,
                                      "name": "IPegasysFactory",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 62,
                                      "src": "1302:15:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IPegasysFactory_$62_$",
                                        "typeString": "type(contract IPegasysFactory)"
                                      }
                                    },
                                    "id": 558,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1302:24:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IPegasysFactory_$62",
                                      "typeString": "contract IPegasysFactory"
                                    }
                                  },
                                  "id": 559,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "createPair",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 51,
                                  "src": "1302:35:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address) external returns (address)"
                                  }
                                },
                                "id": 562,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1302:51:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 563,
                              "nodeType": "ExpressionStatement",
                              "src": "1302:51:3"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          567,
                          569
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 567,
                            "mutability": "mutable",
                            "name": "reserveA",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 655,
                            "src": "1374:16:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 566,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1374:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 569,
                            "mutability": "mutable",
                            "name": "reserveB",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 655,
                            "src": "1392:16:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 568,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1392:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 576,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 572,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 481,
                              "src": "1452:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 573,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 527,
                              "src": "1473:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 574,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 529,
                              "src": "1493:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 570,
                              "name": "PegasysLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3476,
                              "src": "1412:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                "typeString": "type(library PegasysLibrary)"
                              }
                            },
                            "id": 571,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReserves",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3150,
                            "src": "1412:26:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,address) view returns (uint256,uint256)"
                            }
                          },
                          "id": 575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1412:97:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1373:136:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 583,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 579,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 577,
                              "name": "reserveA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 567,
                              "src": "1523:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 578,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1535:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1523:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 582,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 580,
                              "name": "reserveB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 569,
                              "src": "1540:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 581,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1552:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1540:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1523:30:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 653,
                          "nodeType": "Block",
                          "src": "1639:938:3",
                          "statements": [
                            {
                              "assignments": [
                                594
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 594,
                                  "mutability": "mutable",
                                  "name": "amountBOptimal",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 653,
                                  "src": "1653:22:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 593,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1653:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 601,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 597,
                                    "name": "amountADesired",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 531,
                                    "src": "1716:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 598,
                                    "name": "reserveA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 567,
                                    "src": "1748:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 599,
                                    "name": "reserveB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 569,
                                    "src": "1774:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 595,
                                    "name": "PegasysLibrary",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3476,
                                    "src": "1678:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                      "typeString": "type(library PegasysLibrary)"
                                    }
                                  },
                                  "id": 596,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "quote",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3189,
                                  "src": "1678:20:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 600,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1678:118:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1653:143:3"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 604,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 602,
                                  "name": "amountBOptimal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 594,
                                  "src": "1814:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 603,
                                  "name": "amountBDesired",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 533,
                                  "src": "1832:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1814:32:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 651,
                                "nodeType": "Block",
                                "src": "2093:474:3",
                                "statements": [
                                  {
                                    "assignments": [
                                      622
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 622,
                                        "mutability": "mutable",
                                        "name": "amountAOptimal",
                                        "nodeType": "VariableDeclaration",
                                        "overrides": null,
                                        "scope": 651,
                                        "src": "2111:22:3",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 621,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2111:7:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "value": null,
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 629,
                                    "initialValue": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 625,
                                          "name": "amountBDesired",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 533,
                                          "src": "2178:14:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 626,
                                          "name": "reserveB",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 569,
                                          "src": "2214:8:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 627,
                                          "name": "reserveA",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 567,
                                          "src": "2244:8:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 623,
                                          "name": "PegasysLibrary",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3476,
                                          "src": "2136:14:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                            "typeString": "type(library PegasysLibrary)"
                                          }
                                        },
                                        "id": 624,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "quote",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3189,
                                        "src": "2136:20:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 628,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2136:134:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2111:159:3"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 633,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 631,
                                            "name": "amountAOptimal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 622,
                                            "src": "2295:14:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<=",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 632,
                                            "name": "amountADesired",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 531,
                                            "src": "2313:14:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "2295:32:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "id": 630,
                                        "name": "assert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -3,
                                        "src": "2288:6:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                                          "typeString": "function (bool) pure"
                                        }
                                      },
                                      "id": 634,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2288:40:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 635,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2288:40:3"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 639,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 637,
                                            "name": "amountAOptimal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 622,
                                            "src": "2375:14:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">=",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 638,
                                            "name": "amountAMin",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 535,
                                            "src": "2393:10:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "2375:28:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "50656761737973526f757465723a20494e53554646494349454e545f415f414d4f554e54",
                                          "id": 640,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2425:38:3",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_3b7f9a90766f5f1c6f93f942913834a0b9d818153c09a48c2d1cfd8b13742474",
                                            "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_A_AMOUNT\""
                                          },
                                          "value": "PegasysRouter: INSUFFICIENT_A_AMOUNT"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_3b7f9a90766f5f1c6f93f942913834a0b9d818153c09a48c2d1cfd8b13742474",
                                            "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_A_AMOUNT\""
                                          }
                                        ],
                                        "id": 636,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "2346:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 641,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2346:135:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 642,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2346:135:3"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 649,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 643,
                                            "name": "amountA",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 540,
                                            "src": "2500:7:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 644,
                                            "name": "amountB",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 542,
                                            "src": "2509:7:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 645,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "TupleExpression",
                                        "src": "2499:18:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                          "typeString": "tuple(uint256,uint256)"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 646,
                                            "name": "amountAOptimal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 622,
                                            "src": "2521:14:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 647,
                                            "name": "amountBDesired",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 533,
                                            "src": "2537:14:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 648,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "2520:32:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                          "typeString": "tuple(uint256,uint256)"
                                        }
                                      },
                                      "src": "2499:53:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 650,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2499:53:3"
                                  }
                                ]
                              },
                              "id": 652,
                              "nodeType": "IfStatement",
                              "src": "1810:757:3",
                              "trueBody": {
                                "id": 620,
                                "nodeType": "Block",
                                "src": "1848:239:3",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 608,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 606,
                                            "name": "amountBOptimal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 594,
                                            "src": "1895:14:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">=",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 607,
                                            "name": "amountBMin",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 537,
                                            "src": "1913:10:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "1895:28:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "50656761737973526f757465723a20494e53554646494349454e545f425f414d4f554e54",
                                          "id": 609,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1945:38:3",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_972d59ac5a842cb3af205228dc48eef5647a5d3d792d9cdf14ee1216e7387771",
                                            "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_B_AMOUNT\""
                                          },
                                          "value": "PegasysRouter: INSUFFICIENT_B_AMOUNT"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_972d59ac5a842cb3af205228dc48eef5647a5d3d792d9cdf14ee1216e7387771",
                                            "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_B_AMOUNT\""
                                          }
                                        ],
                                        "id": 605,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "1866:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 610,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1866:135:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 611,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1866:135:3"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 618,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 612,
                                            "name": "amountA",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 540,
                                            "src": "2020:7:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 613,
                                            "name": "amountB",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 542,
                                            "src": "2029:7:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 614,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "TupleExpression",
                                        "src": "2019:18:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                          "typeString": "tuple(uint256,uint256)"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 615,
                                            "name": "amountADesired",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 531,
                                            "src": "2041:14:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 616,
                                            "name": "amountBOptimal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 594,
                                            "src": "2057:14:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 617,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "2040:32:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                          "typeString": "tuple(uint256,uint256)"
                                        }
                                      },
                                      "src": "2019:53:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 619,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2019:53:3"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 654,
                        "nodeType": "IfStatement",
                        "src": "1519:1058:3",
                        "trueBody": {
                          "id": 592,
                          "nodeType": "Block",
                          "src": "1555:78:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 590,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 584,
                                      "name": "amountA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 540,
                                      "src": "1570:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 585,
                                      "name": "amountB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 542,
                                      "src": "1579:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 586,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "1569:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 587,
                                      "name": "amountADesired",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 531,
                                      "src": "1591:14:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 588,
                                      "name": "amountBDesired",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 533,
                                      "src": "1607:14:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 589,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1590:32:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256)"
                                  }
                                },
                                "src": "1569:53:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 591,
                              "nodeType": "ExpressionStatement",
                              "src": "1569:53:3"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 656,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_addLiquidity",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 538,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 527,
                        "mutability": "mutable",
                        "name": "tokenA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 656,
                        "src": "934:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 526,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "934:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 529,
                        "mutability": "mutable",
                        "name": "tokenB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 656,
                        "src": "958:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 528,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "958:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 531,
                        "mutability": "mutable",
                        "name": "amountADesired",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 656,
                        "src": "982:22:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 530,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "982:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 533,
                        "mutability": "mutable",
                        "name": "amountBDesired",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 656,
                        "src": "1014:22:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 532,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1014:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 535,
                        "mutability": "mutable",
                        "name": "amountAMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 656,
                        "src": "1046:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 534,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1046:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 537,
                        "mutability": "mutable",
                        "name": "amountBMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 656,
                        "src": "1074:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 536,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1074:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "924:174:3"
                  },
                  "returnParameters": {
                    "id": 543,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 540,
                        "mutability": "mutable",
                        "name": "amountA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 656,
                        "src": "1125:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 539,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1125:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 542,
                        "mutability": "mutable",
                        "name": "amountB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 656,
                        "src": "1142:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 541,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1142:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1124:34:3"
                  },
                  "scope": 2502,
                  "src": "902:1681:3",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2623
                  ],
                  "body": {
                    "id": 736,
                    "nodeType": "Block",
                    "src": "3026:478:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 685,
                                "name": "amountA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 679,
                                "src": "3037:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 686,
                                "name": "amountB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 681,
                                "src": "3046:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 687,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "3036:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 689,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 658,
                                "src": "3084:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 690,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 660,
                                "src": "3104:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 691,
                                "name": "amountADesired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 662,
                                "src": "3124:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 692,
                                "name": "amountBDesired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 664,
                                "src": "3152:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 693,
                                "name": "amountAMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 666,
                                "src": "3180:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 694,
                                "name": "amountBMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 668,
                                "src": "3204:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 688,
                              "name": "_addLiquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 656,
                              "src": "3057:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,address,uint256,uint256,uint256,uint256) returns (uint256,uint256)"
                              }
                            },
                            "id": 695,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3057:167:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "3036:188:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 697,
                        "nodeType": "ExpressionStatement",
                        "src": "3036:188:3"
                      },
                      {
                        "assignments": [
                          699
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 699,
                            "mutability": "mutable",
                            "name": "pair",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 736,
                            "src": "3234:12:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 698,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3234:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 706,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 702,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 481,
                              "src": "3272:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 703,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 658,
                              "src": "3281:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 704,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 660,
                              "src": "3289:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 700,
                              "name": "PegasysLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3476,
                              "src": "3249:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                "typeString": "type(library PegasysLibrary)"
                              }
                            },
                            "id": 701,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "pairFor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3100,
                            "src": "3249:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                              "typeString": "function (address,address,address) pure returns (address)"
                            }
                          },
                          "id": 705,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3249:47:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3234:62:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 710,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 658,
                              "src": "3338:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 711,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3346:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 712,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3346:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 713,
                              "name": "pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 699,
                              "src": "3358:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 714,
                              "name": "amountA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 679,
                              "src": "3364:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 707,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 464,
                              "src": "3306:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$464_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 709,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 438,
                            "src": "3306:31:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 715,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3306:66:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 716,
                        "nodeType": "ExpressionStatement",
                        "src": "3306:66:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 720,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 660,
                              "src": "3414:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 721,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3422:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 722,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3422:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 723,
                              "name": "pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 699,
                              "src": "3434:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 724,
                              "name": "amountB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 681,
                              "src": "3440:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 717,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 464,
                              "src": "3382:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$464_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 719,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 438,
                            "src": "3382:31:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3382:66:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 726,
                        "nodeType": "ExpressionStatement",
                        "src": "3382:66:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 734,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 727,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "3458:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 732,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 670,
                                "src": "3494:2:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 729,
                                    "name": "pair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 699,
                                    "src": "3483:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 728,
                                  "name": "IPegasysPair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 304,
                                  "src": "3470:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IPegasysPair_$304_$",
                                    "typeString": "type(contract IPegasysPair)"
                                  }
                                },
                                "id": 730,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3470:18:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPegasysPair_$304",
                                  "typeString": "contract IPegasysPair"
                                }
                              },
                              "id": 731,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mint",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 268,
                              "src": "3470:23:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) external returns (uint256)"
                              }
                            },
                            "id": 733,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3470:27:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3458:39:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 735,
                        "nodeType": "ExpressionStatement",
                        "src": "3458:39:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "e8e33700",
                  "id": 737,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 676,
                          "name": "deadline",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 672,
                          "src": "2896:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 677,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 675,
                        "name": "ensure",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 498,
                        "src": "2889:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_uint256_$",
                          "typeString": "modifier (uint256)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2889:16:3"
                    }
                  ],
                  "name": "addLiquidity",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 674,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2872:8:3"
                  },
                  "parameters": {
                    "id": 673,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 658,
                        "mutability": "mutable",
                        "name": "tokenA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 737,
                        "src": "2620:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 657,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2620:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 660,
                        "mutability": "mutable",
                        "name": "tokenB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 737,
                        "src": "2644:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 659,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2644:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 662,
                        "mutability": "mutable",
                        "name": "amountADesired",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 737,
                        "src": "2668:22:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 661,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2668:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 664,
                        "mutability": "mutable",
                        "name": "amountBDesired",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 737,
                        "src": "2700:22:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 663,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2700:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 666,
                        "mutability": "mutable",
                        "name": "amountAMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 737,
                        "src": "2732:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 665,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2732:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 668,
                        "mutability": "mutable",
                        "name": "amountBMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 737,
                        "src": "2760:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 667,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2760:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 670,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 737,
                        "src": "2788:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 669,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2788:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 672,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 737,
                        "src": "2808:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 671,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2808:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2610:220:3"
                  },
                  "returnParameters": {
                    "id": 684,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 679,
                        "mutability": "mutable",
                        "name": "amountA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 737,
                        "src": "2936:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 678,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2936:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 681,
                        "mutability": "mutable",
                        "name": "amountB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 737,
                        "src": "2965:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 680,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2965:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 683,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 737,
                        "src": "2994:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 682,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2994:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2922:99:3"
                  },
                  "scope": 2502,
                  "src": "2589:915:3",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2644
                  ],
                  "body": {
                    "id": 838,
                    "nodeType": "Block",
                    "src": "3925:663:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 762,
                                "name": "amountToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 756,
                                "src": "3936:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 763,
                                "name": "amountSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 758,
                                "src": "3949:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 764,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "3935:24:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 766,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 739,
                                "src": "3989:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 767,
                                "name": "WSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 484,
                                "src": "4008:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 768,
                                "name": "amountTokenDesired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 741,
                                "src": "4026:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 769,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "4058:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 770,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4058:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 771,
                                "name": "amountTokenMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 743,
                                "src": "4081:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 772,
                                "name": "amountSYSMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 745,
                                "src": "4109:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 765,
                              "name": "_addLiquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 656,
                              "src": "3962:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,address,uint256,uint256,uint256,uint256) returns (uint256,uint256)"
                              }
                            },
                            "id": 773,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3962:169:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "3935:196:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 775,
                        "nodeType": "ExpressionStatement",
                        "src": "3935:196:3"
                      },
                      {
                        "assignments": [
                          777
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 777,
                            "mutability": "mutable",
                            "name": "pair",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 838,
                            "src": "4141:12:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 776,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4141:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 784,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 780,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 481,
                              "src": "4179:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 781,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 739,
                              "src": "4188:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 782,
                              "name": "WSYS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 484,
                              "src": "4195:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 778,
                              "name": "PegasysLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3476,
                              "src": "4156:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                "typeString": "type(library PegasysLibrary)"
                              }
                            },
                            "id": 779,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "pairFor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3100,
                            "src": "4156:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                              "typeString": "function (address,address,address) pure returns (address)"
                            }
                          },
                          "id": 783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4156:44:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4141:59:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 788,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 739,
                              "src": "4242:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 789,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4249:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 790,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4249:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 791,
                              "name": "pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 777,
                              "src": "4261:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 792,
                              "name": "amountToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 756,
                              "src": "4267:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 785,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 464,
                              "src": "4210:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$464_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 438,
                            "src": "4210:31:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 793,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4210:69:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 794,
                        "nodeType": "ExpressionStatement",
                        "src": "4210:69:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 796,
                                    "name": "WSYS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 484,
                                    "src": "4295:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 795,
                                  "name": "IWSYS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3003,
                                  "src": "4289:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWSYS_$3003_$",
                                    "typeString": "type(contract IWSYS)"
                                  }
                                },
                                "id": 797,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4289:11:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWSYS_$3003",
                                  "typeString": "contract IWSYS"
                                }
                              },
                              "id": 798,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "deposit",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2981,
                              "src": "4289:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_payable$__$returns$__$",
                                "typeString": "function () payable external"
                              }
                            },
                            "id": 800,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "argumentTypes": null,
                                "id": 799,
                                "name": "amountSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 758,
                                "src": "4316:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "4289:37:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                              "typeString": "function () payable external"
                            }
                          },
                          "id": 801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4289:39:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 802,
                        "nodeType": "ExpressionStatement",
                        "src": "4289:39:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 808,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 777,
                                  "src": "4366:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 809,
                                  "name": "amountSYS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 758,
                                  "src": "4372:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 805,
                                      "name": "WSYS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 484,
                                      "src": "4351:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 804,
                                    "name": "IWSYS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3003,
                                    "src": "4345:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IWSYS_$3003_$",
                                      "typeString": "type(contract IWSYS)"
                                    }
                                  },
                                  "id": 806,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4345:11:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IWSYS_$3003",
                                    "typeString": "contract IWSYS"
                                  }
                                },
                                "id": 807,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2990,
                                "src": "4345:20:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 810,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4345:37:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 803,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "4338:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 811,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4338:45:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 812,
                        "nodeType": "ExpressionStatement",
                        "src": "4338:45:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 820,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 813,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 760,
                            "src": "4393:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 818,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 747,
                                "src": "4429:2:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 815,
                                    "name": "pair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 777,
                                    "src": "4418:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 814,
                                  "name": "IPegasysPair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 304,
                                  "src": "4405:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IPegasysPair_$304_$",
                                    "typeString": "type(contract IPegasysPair)"
                                  }
                                },
                                "id": 816,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4405:18:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPegasysPair_$304",
                                  "typeString": "contract IPegasysPair"
                                }
                              },
                              "id": 817,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mint",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 268,
                              "src": "4405:23:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) external returns (uint256)"
                              }
                            },
                            "id": 819,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4405:27:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4393:39:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 821,
                        "nodeType": "ExpressionStatement",
                        "src": "4393:39:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 825,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 822,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "4481:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 823,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4481:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 824,
                            "name": "amountSYS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 758,
                            "src": "4493:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4481:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 837,
                        "nodeType": "IfStatement",
                        "src": "4477:104:3",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 829,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "4547:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 830,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4547:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 834,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 831,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "4559:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 832,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "4559:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 833,
                                  "name": "amountSYS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 758,
                                  "src": "4571:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4559:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 826,
                                "name": "TransferHelper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 464,
                                "src": "4516:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TransferHelper_$464_$",
                                  "typeString": "type(library TransferHelper)"
                                }
                              },
                              "id": 828,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "safeTransferSYS",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 463,
                              "src": "4516:30:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                "typeString": "function (address,uint256)"
                              }
                            },
                            "id": 835,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4516:65:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 836,
                          "nodeType": "ExpressionStatement",
                          "src": "4516:65:3"
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "3c7356d5",
                  "id": 839,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 753,
                          "name": "deadline",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 749,
                          "src": "3789:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 754,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 752,
                        "name": "ensure",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 498,
                        "src": "3782:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_uint256_$",
                          "typeString": "modifier (uint256)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3782:16:3"
                    }
                  ],
                  "name": "addLiquiditySYS",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 751,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3765:8:3"
                  },
                  "parameters": {
                    "id": 750,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 739,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 839,
                        "src": "3544:13:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 738,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3544:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 741,
                        "mutability": "mutable",
                        "name": "amountTokenDesired",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 839,
                        "src": "3567:26:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 740,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3567:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 743,
                        "mutability": "mutable",
                        "name": "amountTokenMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 839,
                        "src": "3603:22:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 742,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3603:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 745,
                        "mutability": "mutable",
                        "name": "amountSYSMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 839,
                        "src": "3635:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 744,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3635:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 747,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 839,
                        "src": "3665:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 746,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3665:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 749,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 839,
                        "src": "3685:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 748,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3685:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3534:173:3"
                  },
                  "returnParameters": {
                    "id": 761,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 756,
                        "mutability": "mutable",
                        "name": "amountToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 839,
                        "src": "3829:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 755,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3829:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 758,
                        "mutability": "mutable",
                        "name": "amountSYS",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 839,
                        "src": "3862:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 757,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3862:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 760,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 839,
                        "src": "3893:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 759,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3893:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3815:105:3"
                  },
                  "scope": 2502,
                  "src": "3510:1078:3",
                  "stateMutability": "payable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2665
                  ],
                  "body": {
                    "id": 931,
                    "nodeType": "Block",
                    "src": "4964:594:3",
                    "statements": [
                      {
                        "assignments": [
                          865
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 865,
                            "mutability": "mutable",
                            "name": "pair",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 931,
                            "src": "4974:12:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 864,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4974:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 872,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 868,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 481,
                              "src": "5012:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 869,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 841,
                              "src": "5021:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 870,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 843,
                              "src": "5029:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 866,
                              "name": "PegasysLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3476,
                              "src": "4989:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                "typeString": "type(library PegasysLibrary)"
                              }
                            },
                            "id": 867,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "pairFor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3100,
                            "src": "4989:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                              "typeString": "function (address,address,address) pure returns (address)"
                            }
                          },
                          "id": 871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4989:47:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4974:62:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 877,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "5078:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5078:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 879,
                              "name": "pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 865,
                              "src": "5090:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 880,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 845,
                              "src": "5096:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 874,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 865,
                                  "src": "5059:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 873,
                                "name": "IPegasysPair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 304,
                                "src": "5046:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPegasysPair_$304_$",
                                  "typeString": "type(contract IPegasysPair)"
                                }
                              },
                              "id": 875,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5046:18:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPegasysPair_$304",
                                "typeString": "contract IPegasysPair"
                              }
                            },
                            "id": 876,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 145,
                            "src": "5046:31:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5046:60:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 882,
                        "nodeType": "ExpressionStatement",
                        "src": "5046:60:3"
                      },
                      {
                        "assignments": [
                          884,
                          886
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 884,
                            "mutability": "mutable",
                            "name": "amount0",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 931,
                            "src": "5143:15:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 883,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5143:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 886,
                            "mutability": "mutable",
                            "name": "amount1",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 931,
                            "src": "5160:15:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 885,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5160:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 893,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 891,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 851,
                              "src": "5203:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 888,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 865,
                                  "src": "5192:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 887,
                                "name": "IPegasysPair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 304,
                                "src": "5179:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPegasysPair_$304_$",
                                  "typeString": "type(contract IPegasysPair)"
                                }
                              },
                              "id": 889,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5179:18:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPegasysPair_$304",
                                "typeString": "contract IPegasysPair"
                              }
                            },
                            "id": 890,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "burn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 277,
                            "src": "5179:23:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address) external returns (uint256,uint256)"
                            }
                          },
                          "id": 892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5179:27:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5142:64:3"
                      },
                      {
                        "assignments": [
                          895,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 895,
                            "mutability": "mutable",
                            "name": "token0",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 931,
                            "src": "5217:14:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 894,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5217:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 901,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 898,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 841,
                              "src": "5263:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 899,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 843,
                              "src": "5271:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 896,
                              "name": "PegasysLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3476,
                              "src": "5237:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                "typeString": "type(library PegasysLibrary)"
                              }
                            },
                            "id": 897,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sortTokens",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3055,
                            "src": "5237:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                              "typeString": "function (address,address) pure returns (address,address)"
                            }
                          },
                          "id": 900,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5237:41:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                            "typeString": "tuple(address,address)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5216:62:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 902,
                                "name": "amountA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 860,
                                "src": "5289:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 903,
                                "name": "amountB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 862,
                                "src": "5298:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 904,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "5288:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 905,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 841,
                                "src": "5309:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 906,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 895,
                                "src": "5319:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "5309:16:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 911,
                                  "name": "amount1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 886,
                                  "src": "5374:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 912,
                                  "name": "amount0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 884,
                                  "src": "5383:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 913,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5373:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "id": 914,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "5309:82:3",
                            "trueExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 908,
                                  "name": "amount0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 884,
                                  "src": "5341:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 909,
                                  "name": "amount1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 886,
                                  "src": "5350:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 910,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5340:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "5288:103:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 916,
                        "nodeType": "ExpressionStatement",
                        "src": "5288:103:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 920,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 918,
                                "name": "amountA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 860,
                                "src": "5409:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 919,
                                "name": "amountAMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 847,
                                "src": "5420:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5409:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50656761737973526f757465723a20494e53554646494349454e545f415f414d4f554e54",
                              "id": 921,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5432:38:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3b7f9a90766f5f1c6f93f942913834a0b9d818153c09a48c2d1cfd8b13742474",
                                "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_A_AMOUNT\""
                              },
                              "value": "PegasysRouter: INSUFFICIENT_A_AMOUNT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3b7f9a90766f5f1c6f93f942913834a0b9d818153c09a48c2d1cfd8b13742474",
                                "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_A_AMOUNT\""
                              }
                            ],
                            "id": 917,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5401:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 922,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5401:70:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 923,
                        "nodeType": "ExpressionStatement",
                        "src": "5401:70:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 927,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 925,
                                "name": "amountB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 862,
                                "src": "5489:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 926,
                                "name": "amountBMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 849,
                                "src": "5500:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5489:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50656761737973526f757465723a20494e53554646494349454e545f425f414d4f554e54",
                              "id": 928,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5512:38:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_972d59ac5a842cb3af205228dc48eef5647a5d3d792d9cdf14ee1216e7387771",
                                "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_B_AMOUNT\""
                              },
                              "value": "PegasysRouter: INSUFFICIENT_B_AMOUNT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_972d59ac5a842cb3af205228dc48eef5647a5d3d792d9cdf14ee1216e7387771",
                                "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_B_AMOUNT\""
                              }
                            ],
                            "id": 924,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5481:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 929,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5481:70:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 930,
                        "nodeType": "ExpressionStatement",
                        "src": "5481:70:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "baa2abde",
                  "id": 932,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 857,
                          "name": "deadline",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 853,
                          "src": "4899:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 858,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 856,
                        "name": "ensure",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 498,
                        "src": "4892:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_uint256_$",
                          "typeString": "modifier (uint256)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4892:16:3"
                    }
                  ],
                  "name": "removeLiquidity",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 855,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4875:8:3"
                  },
                  "parameters": {
                    "id": 854,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 841,
                        "mutability": "mutable",
                        "name": "tokenA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 932,
                        "src": "4662:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 840,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4662:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 843,
                        "mutability": "mutable",
                        "name": "tokenB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 932,
                        "src": "4686:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 842,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4686:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 845,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 932,
                        "src": "4710:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 844,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4710:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 847,
                        "mutability": "mutable",
                        "name": "amountAMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 932,
                        "src": "4737:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 846,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4737:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 849,
                        "mutability": "mutable",
                        "name": "amountBMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 932,
                        "src": "4765:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 848,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4765:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 851,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 932,
                        "src": "4793:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 850,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4793:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 853,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 932,
                        "src": "4813:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 852,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4813:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4652:183:3"
                  },
                  "returnParameters": {
                    "id": 863,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 860,
                        "mutability": "mutable",
                        "name": "amountA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 932,
                        "src": "4926:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 859,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4926:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 862,
                        "mutability": "mutable",
                        "name": "amountB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 932,
                        "src": "4943:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 861,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4943:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4925:34:3"
                  },
                  "scope": 2502,
                  "src": "4628:930:3",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2684
                  ],
                  "body": {
                    "id": 994,
                    "nodeType": "Block",
                    "src": "5890:389:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 955,
                                "name": "amountToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 951,
                                "src": "5901:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 956,
                                "name": "amountSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 953,
                                "src": "5914:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 957,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "5900:24:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 959,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 934,
                                "src": "5956:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 960,
                                "name": "WSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 484,
                                "src": "5975:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 961,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 936,
                                "src": "5993:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 962,
                                "name": "amountTokenMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 938,
                                "src": "6016:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 963,
                                "name": "amountSYSMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 940,
                                "src": "6044:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 966,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "6078:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                      "typeString": "contract PegasysRouter"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                      "typeString": "contract PegasysRouter"
                                    }
                                  ],
                                  "id": 965,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6070:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 964,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6070:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 967,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6070:13:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 968,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 944,
                                "src": "6097:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 958,
                              "name": "removeLiquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 932,
                              "src": "5927:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"
                              }
                            },
                            "id": 969,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5927:188:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "5900:215:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 971,
                        "nodeType": "ExpressionStatement",
                        "src": "5900:215:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 975,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 934,
                              "src": "6153:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 976,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 942,
                              "src": "6160:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 977,
                              "name": "amountToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 951,
                              "src": "6164:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 972,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 464,
                              "src": "6125:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$464_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 974,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 392,
                            "src": "6125:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 978,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6125:51:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 979,
                        "nodeType": "ExpressionStatement",
                        "src": "6125:51:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 984,
                              "name": "amountSYS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 953,
                              "src": "6207:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 981,
                                  "name": "WSYS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 484,
                                  "src": "6192:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 980,
                                "name": "IWSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3003,
                                "src": "6186:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWSYS_$3003_$",
                                  "typeString": "type(contract IWSYS)"
                                }
                              },
                              "id": 982,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6186:11:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWSYS_$3003",
                                "typeString": "contract IWSYS"
                              }
                            },
                            "id": 983,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "withdraw",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3002,
                            "src": "6186:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) external"
                            }
                          },
                          "id": 985,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6186:31:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 986,
                        "nodeType": "ExpressionStatement",
                        "src": "6186:31:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 990,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 942,
                              "src": "6258:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 991,
                              "name": "amountSYS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 953,
                              "src": "6262:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 987,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 464,
                              "src": "6227:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$464_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 989,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferSYS",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 463,
                            "src": "6227:30:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 992,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6227:45:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 993,
                        "nodeType": "ExpressionStatement",
                        "src": "6227:45:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "016c8414",
                  "id": 995,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 948,
                          "name": "deadline",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 944,
                          "src": "5819:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 949,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 947,
                        "name": "ensure",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 498,
                        "src": "5812:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_uint256_$",
                          "typeString": "modifier (uint256)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5812:16:3"
                    }
                  ],
                  "name": "removeLiquiditySYS",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 946,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5795:8:3"
                  },
                  "parameters": {
                    "id": 945,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 934,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 995,
                        "src": "5601:13:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 933,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5601:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 936,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 995,
                        "src": "5624:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 935,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5624:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 938,
                        "mutability": "mutable",
                        "name": "amountTokenMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 995,
                        "src": "5651:22:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 937,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5651:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 940,
                        "mutability": "mutable",
                        "name": "amountSYSMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 995,
                        "src": "5683:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 939,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5683:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 942,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 995,
                        "src": "5713:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 941,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5713:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 944,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 995,
                        "src": "5733:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 943,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5733:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5591:164:3"
                  },
                  "returnParameters": {
                    "id": 954,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 951,
                        "mutability": "mutable",
                        "name": "amountToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 995,
                        "src": "5846:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 950,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5846:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 953,
                        "mutability": "mutable",
                        "name": "amountSYS",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 995,
                        "src": "5867:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 952,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5867:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5845:40:3"
                  },
                  "scope": 2502,
                  "src": "5564:715:3",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2713
                  ],
                  "body": {
                    "id": 1076,
                    "nodeType": "Block",
                    "src": "6652:528:3",
                    "statements": [
                      {
                        "assignments": [
                          1026
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1026,
                            "mutability": "mutable",
                            "name": "pair",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1076,
                            "src": "6662:12:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1025,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6662:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1033,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1029,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 481,
                              "src": "6700:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1030,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 997,
                              "src": "6709:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1031,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 999,
                              "src": "6717:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1027,
                              "name": "PegasysLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3476,
                              "src": "6677:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                "typeString": "type(library PegasysLibrary)"
                              }
                            },
                            "id": 1028,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "pairFor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3100,
                            "src": "6677:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                              "typeString": "function (address,address,address) pure returns (address)"
                            }
                          },
                          "id": 1032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6677:47:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6662:62:3"
                      },
                      {
                        "assignments": [
                          1035
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1035,
                            "mutability": "mutable",
                            "name": "value",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1076,
                            "src": "6734:13:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1034,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6734:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1044,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "id": 1036,
                            "name": "approveMax",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1011,
                            "src": "6750:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "id": 1042,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1001,
                            "src": "6777:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "6750:36:3",
                          "trueExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1040,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "6771:2:3",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1039,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6772:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 1038,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6763:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 1037,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6763:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1041,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6763:11:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6734:52:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1049,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "6835:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1050,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6835:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1053,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "6867:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                    "typeString": "contract PegasysRouter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                    "typeString": "contract PegasysRouter"
                                  }
                                ],
                                "id": 1052,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6859:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1051,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6859:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1054,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6859:13:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1055,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1035,
                              "src": "6886:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1056,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1009,
                              "src": "6905:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1057,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1013,
                              "src": "6927:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1058,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1015,
                              "src": "6942:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1059,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1017,
                              "src": "6957:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1046,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1026,
                                  "src": "6809:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1045,
                                "name": "IPegasysPair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 304,
                                "src": "6796:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPegasysPair_$304_$",
                                  "typeString": "type(contract IPegasysPair)"
                                }
                              },
                              "id": 1047,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6796:18:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPegasysPair_$304",
                                "typeString": "contract IPegasysPair"
                              }
                            },
                            "id": 1048,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "permit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 179,
                            "src": "6796:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                            }
                          },
                          "id": 1060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6796:172:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1061,
                        "nodeType": "ExpressionStatement",
                        "src": "6796:172:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 1062,
                                "name": "amountA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1021,
                                "src": "6979:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1063,
                                "name": "amountB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1023,
                                "src": "6988:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1064,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "6978:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1066,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 997,
                                "src": "7028:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1067,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 999,
                                "src": "7048:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1068,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1001,
                                "src": "7068:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1069,
                                "name": "amountAMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1003,
                                "src": "7091:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1070,
                                "name": "amountBMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1005,
                                "src": "7115:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1071,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1007,
                                "src": "7139:2:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1072,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1009,
                                "src": "7155:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1065,
                              "name": "removeLiquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 932,
                              "src": "6999:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"
                              }
                            },
                            "id": 1073,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6999:174:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "6978:195:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1075,
                        "nodeType": "ExpressionStatement",
                        "src": "6978:195:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "2195995c",
                  "id": 1077,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "removeLiquidityWithPermit",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1019,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6600:8:3"
                  },
                  "parameters": {
                    "id": 1018,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 997,
                        "mutability": "mutable",
                        "name": "tokenA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1077,
                        "src": "6329:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 996,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6329:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 999,
                        "mutability": "mutable",
                        "name": "tokenB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1077,
                        "src": "6353:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 998,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6353:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1001,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1077,
                        "src": "6377:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1000,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6377:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1003,
                        "mutability": "mutable",
                        "name": "amountAMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1077,
                        "src": "6404:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1002,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6404:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1005,
                        "mutability": "mutable",
                        "name": "amountBMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1077,
                        "src": "6432:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1004,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6432:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1007,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1077,
                        "src": "6460:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1006,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6460:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1009,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1077,
                        "src": "6480:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1008,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6480:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1011,
                        "mutability": "mutable",
                        "name": "approveMax",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1077,
                        "src": "6506:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1010,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6506:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1013,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1077,
                        "src": "6531:7:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 1012,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "6531:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1015,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1077,
                        "src": "6548:9:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1014,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6548:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1017,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1077,
                        "src": "6567:9:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1016,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6567:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6319:263:3"
                  },
                  "returnParameters": {
                    "id": 1024,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1021,
                        "mutability": "mutable",
                        "name": "amountA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1077,
                        "src": "6618:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1020,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6618:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1023,
                        "mutability": "mutable",
                        "name": "amountB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1077,
                        "src": "6635:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1022,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6635:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6617:34:3"
                  },
                  "scope": 2502,
                  "src": "6285:895:3",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2740
                  ],
                  "body": {
                    "id": 1155,
                    "nodeType": "Block",
                    "src": "7579:519:3",
                    "statements": [
                      {
                        "assignments": [
                          1106
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1106,
                            "mutability": "mutable",
                            "name": "pair",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1155,
                            "src": "7589:12:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1105,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7589:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1113,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1109,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 481,
                              "src": "7627:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1110,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1079,
                              "src": "7636:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1111,
                              "name": "WSYS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 484,
                              "src": "7643:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1107,
                              "name": "PegasysLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3476,
                              "src": "7604:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                "typeString": "type(library PegasysLibrary)"
                              }
                            },
                            "id": 1108,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "pairFor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3100,
                            "src": "7604:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                              "typeString": "function (address,address,address) pure returns (address)"
                            }
                          },
                          "id": 1112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7604:44:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7589:59:3"
                      },
                      {
                        "assignments": [
                          1115
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1115,
                            "mutability": "mutable",
                            "name": "value",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1155,
                            "src": "7658:13:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1114,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7658:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1124,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "id": 1116,
                            "name": "approveMax",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1091,
                            "src": "7674:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "id": 1122,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1081,
                            "src": "7701:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "7674:36:3",
                          "trueExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1120,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "7695:2:3",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1119,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7696:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 1118,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7687:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 1117,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7687:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1121,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7687:11:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7658:52:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1129,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "7759:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7759:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1133,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "7791:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                    "typeString": "contract PegasysRouter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                    "typeString": "contract PegasysRouter"
                                  }
                                ],
                                "id": 1132,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7783:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1131,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7783:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1134,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7783:13:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1135,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1115,
                              "src": "7810:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1136,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1089,
                              "src": "7829:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1137,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1093,
                              "src": "7851:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1138,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1095,
                              "src": "7866:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1139,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1097,
                              "src": "7881:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1126,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1106,
                                  "src": "7733:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1125,
                                "name": "IPegasysPair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 304,
                                "src": "7720:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPegasysPair_$304_$",
                                  "typeString": "type(contract IPegasysPair)"
                                }
                              },
                              "id": 1127,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7720:18:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPegasysPair_$304",
                                "typeString": "contract IPegasysPair"
                              }
                            },
                            "id": 1128,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "permit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 179,
                            "src": "7720:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                            }
                          },
                          "id": 1140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7720:172:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1141,
                        "nodeType": "ExpressionStatement",
                        "src": "7720:172:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1153,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 1142,
                                "name": "amountToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1101,
                                "src": "7903:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1143,
                                "name": "amountSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1103,
                                "src": "7916:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1144,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "7902:24:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1146,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1079,
                                "src": "7961:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1147,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1081,
                                "src": "7980:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1148,
                                "name": "amountTokenMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1083,
                                "src": "8003:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1149,
                                "name": "amountSYSMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1085,
                                "src": "8031:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1150,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1087,
                                "src": "8057:2:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1151,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1089,
                                "src": "8073:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1145,
                              "name": "removeLiquiditySYS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 995,
                              "src": "7929:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"
                              }
                            },
                            "id": 1152,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7929:162:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "7902:189:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1154,
                        "nodeType": "ExpressionStatement",
                        "src": "7902:189:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "dfd9111b",
                  "id": 1156,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "removeLiquiditySYSWithPermit",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1099,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7509:8:3"
                  },
                  "parameters": {
                    "id": 1098,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1079,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1156,
                        "src": "7233:13:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1078,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7233:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1081,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1156,
                        "src": "7256:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1080,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7256:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1083,
                        "mutability": "mutable",
                        "name": "amountTokenMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1156,
                        "src": "7283:22:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1082,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7283:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1085,
                        "mutability": "mutable",
                        "name": "amountSYSMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1156,
                        "src": "7315:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1084,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7315:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1087,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1156,
                        "src": "7345:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1086,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7345:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1089,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1156,
                        "src": "7365:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1088,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7365:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1091,
                        "mutability": "mutable",
                        "name": "approveMax",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1156,
                        "src": "7391:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1090,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7391:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1093,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1156,
                        "src": "7416:7:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 1092,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "7416:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1095,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1156,
                        "src": "7433:9:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1094,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7433:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1097,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1156,
                        "src": "7452:9:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1096,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7452:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7223:244:3"
                  },
                  "returnParameters": {
                    "id": 1104,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1101,
                        "mutability": "mutable",
                        "name": "amountToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1156,
                        "src": "7535:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1100,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7535:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1103,
                        "mutability": "mutable",
                        "name": "amountSYS",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1156,
                        "src": "7556:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1102,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7556:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7534:40:3"
                  },
                  "scope": 2502,
                  "src": "7186:912:3",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2910
                  ],
                  "body": {
                    "id": 1223,
                    "nodeType": "Block",
                    "src": "8464:451:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              null,
                              {
                                "argumentTypes": null,
                                "id": 1177,
                                "name": "amountSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1175,
                                "src": "8477:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1178,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "8474:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$_t_uint256_$",
                              "typeString": "tuple(,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1180,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1158,
                                "src": "8519:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1181,
                                "name": "WSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 484,
                                "src": "8538:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1182,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1160,
                                "src": "8556:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1183,
                                "name": "amountTokenMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1162,
                                "src": "8579:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1184,
                                "name": "amountSYSMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1164,
                                "src": "8607:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1187,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "8641:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                      "typeString": "contract PegasysRouter"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                      "typeString": "contract PegasysRouter"
                                    }
                                  ],
                                  "id": 1186,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8633:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1185,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8633:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1188,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8633:13:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1189,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1168,
                                "src": "8660:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1179,
                              "name": "removeLiquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 932,
                              "src": "8490:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"
                              }
                            },
                            "id": 1190,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8490:188:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "8474:204:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1192,
                        "nodeType": "ExpressionStatement",
                        "src": "8474:204:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1196,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1158,
                              "src": "8729:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1197,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1166,
                              "src": "8748:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1204,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "8796:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                        "typeString": "contract PegasysRouter"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                        "typeString": "contract PegasysRouter"
                                      }
                                    ],
                                    "id": 1203,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "8788:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 1202,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "8788:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1205,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8788:13:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1199,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1158,
                                      "src": "8771:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 1198,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2586,
                                    "src": "8764:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$2586_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 1200,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8764:13:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$2586",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 1201,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2547,
                                "src": "8764:23:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 1206,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8764:38:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1193,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 464,
                              "src": "8688:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$464_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 1195,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 392,
                            "src": "8688:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8688:124:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1208,
                        "nodeType": "ExpressionStatement",
                        "src": "8688:124:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1213,
                              "name": "amountSYS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1175,
                              "src": "8843:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1210,
                                  "name": "WSYS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 484,
                                  "src": "8828:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1209,
                                "name": "IWSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3003,
                                "src": "8822:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWSYS_$3003_$",
                                  "typeString": "type(contract IWSYS)"
                                }
                              },
                              "id": 1211,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8822:11:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWSYS_$3003",
                                "typeString": "contract IWSYS"
                              }
                            },
                            "id": 1212,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "withdraw",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3002,
                            "src": "8822:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) external"
                            }
                          },
                          "id": 1214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8822:31:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1215,
                        "nodeType": "ExpressionStatement",
                        "src": "8822:31:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1219,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1166,
                              "src": "8894:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1220,
                              "name": "amountSYS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1175,
                              "src": "8898:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1216,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 464,
                              "src": "8863:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$464_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 1218,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferSYS",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 463,
                            "src": "8863:30:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 1221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8863:45:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1222,
                        "nodeType": "ExpressionStatement",
                        "src": "8863:45:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "aab4c40b",
                  "id": 1224,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1172,
                          "name": "deadline",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1168,
                          "src": "8426:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1173,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1171,
                        "name": "ensure",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 498,
                        "src": "8419:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_uint256_$",
                          "typeString": "modifier (uint256)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8419:16:3"
                    }
                  ],
                  "name": "removeLiquiditySYSSupportingFeeOnTransferTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1170,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8410:8:3"
                  },
                  "parameters": {
                    "id": 1169,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1158,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1224,
                        "src": "8240:13:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1157,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8240:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1160,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1224,
                        "src": "8263:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1159,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8263:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1162,
                        "mutability": "mutable",
                        "name": "amountTokenMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1224,
                        "src": "8290:22:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1161,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8290:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1164,
                        "mutability": "mutable",
                        "name": "amountSYSMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1224,
                        "src": "8322:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1163,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8322:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1166,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1224,
                        "src": "8352:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1165,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8352:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1168,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1224,
                        "src": "8372:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1167,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8372:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8230:164:3"
                  },
                  "returnParameters": {
                    "id": 1176,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1175,
                        "mutability": "mutable",
                        "name": "amountSYS",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1224,
                        "src": "8445:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1174,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8445:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8444:19:3"
                  },
                  "scope": 2502,
                  "src": "8174:741:3",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2935
                  ],
                  "body": {
                    "id": 1298,
                    "nodeType": "Block",
                    "src": "9286:533:3",
                    "statements": [
                      {
                        "assignments": [
                          1251
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1251,
                            "mutability": "mutable",
                            "name": "pair",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1298,
                            "src": "9296:12:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 1250,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9296:7:3",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1258,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1254,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 481,
                              "src": "9334:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1255,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1226,
                              "src": "9343:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1256,
                              "name": "WSYS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 484,
                              "src": "9350:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1252,
                              "name": "PegasysLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3476,
                              "src": "9311:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                "typeString": "type(library PegasysLibrary)"
                              }
                            },
                            "id": 1253,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "pairFor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3100,
                            "src": "9311:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                              "typeString": "function (address,address,address) pure returns (address)"
                            }
                          },
                          "id": 1257,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9311:44:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9296:59:3"
                      },
                      {
                        "assignments": [
                          1260
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1260,
                            "mutability": "mutable",
                            "name": "value",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1298,
                            "src": "9365:13:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1259,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9365:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1269,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "id": 1261,
                            "name": "approveMax",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1238,
                            "src": "9381:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "id": 1267,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1228,
                            "src": "9408:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "9381:36:3",
                          "trueExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1265,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "9402:2:3",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1264,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9403:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 1263,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9394:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 1262,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9394:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1266,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9394:11:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9365:52:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1274,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "9466:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1275,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9466:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1278,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "9498:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                    "typeString": "contract PegasysRouter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                    "typeString": "contract PegasysRouter"
                                  }
                                ],
                                "id": 1277,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9490:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1276,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9490:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1279,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9490:13:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1280,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1260,
                              "src": "9517:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1281,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1236,
                              "src": "9536:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1282,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1240,
                              "src": "9558:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1283,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1242,
                              "src": "9573:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1284,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1244,
                              "src": "9588:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1271,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1251,
                                  "src": "9440:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1270,
                                "name": "IPegasysPair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 304,
                                "src": "9427:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPegasysPair_$304_$",
                                  "typeString": "type(contract IPegasysPair)"
                                }
                              },
                              "id": 1272,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9427:18:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPegasysPair_$304",
                                "typeString": "contract IPegasysPair"
                              }
                            },
                            "id": 1273,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "permit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 179,
                            "src": "9427:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                            }
                          },
                          "id": 1285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9427:172:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1286,
                        "nodeType": "ExpressionStatement",
                        "src": "9427:172:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1287,
                            "name": "amountSYS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1248,
                            "src": "9609:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1289,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1226,
                                "src": "9682:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1290,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1228,
                                "src": "9701:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1291,
                                "name": "amountTokenMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1230,
                                "src": "9724:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1292,
                                "name": "amountSYSMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1232,
                                "src": "9752:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1293,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1234,
                                "src": "9778:2:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1294,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1236,
                                "src": "9794:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1288,
                              "name": "removeLiquiditySYSSupportingFeeOnTransferTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1224,
                              "src": "9621:47:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256,uint256,uint256,address,uint256) returns (uint256)"
                              }
                            },
                            "id": 1295,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9621:191:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9609:203:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1297,
                        "nodeType": "ExpressionStatement",
                        "src": "9609:203:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "f1a730bd",
                  "id": 1299,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "removeLiquiditySYSWithPermitSupportingFeeOnTransferTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1246,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9249:8:3"
                  },
                  "parameters": {
                    "id": 1245,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1226,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1299,
                        "src": "8997:13:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1225,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8997:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1228,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1299,
                        "src": "9020:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1227,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9020:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1230,
                        "mutability": "mutable",
                        "name": "amountTokenMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1299,
                        "src": "9047:22:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1229,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9047:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1232,
                        "mutability": "mutable",
                        "name": "amountSYSMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1299,
                        "src": "9079:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1231,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9079:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1234,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1299,
                        "src": "9109:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1233,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9109:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1236,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1299,
                        "src": "9129:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1235,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9129:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1238,
                        "mutability": "mutable",
                        "name": "approveMax",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1299,
                        "src": "9155:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1237,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9155:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1240,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1299,
                        "src": "9180:7:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 1239,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "9180:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1242,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1299,
                        "src": "9197:9:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1241,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9197:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1244,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1299,
                        "src": "9216:9:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1243,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9216:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8987:244:3"
                  },
                  "returnParameters": {
                    "id": 1249,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1248,
                        "mutability": "mutable",
                        "name": "amountSYS",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1299,
                        "src": "9267:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1247,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9267:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9266:19:3"
                  },
                  "scope": 2502,
                  "src": "8921:898:3",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1414,
                    "nodeType": "Block",
                    "src": "10050:756:3",
                    "statements": [
                      {
                        "body": {
                          "id": 1412,
                          "nodeType": "Block",
                          "src": "10102:698:3",
                          "statements": [
                            {
                              "assignments": [
                                1323,
                                1325
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1323,
                                  "mutability": "mutable",
                                  "name": "input",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1412,
                                  "src": "10117:13:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 1322,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10117:7:3",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 1325,
                                  "mutability": "mutable",
                                  "name": "output",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1412,
                                  "src": "10132:14:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 1324,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10132:7:3",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1335,
                              "initialValue": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1326,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1305,
                                      "src": "10151:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 1328,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1327,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1311,
                                      "src": "10156:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "10151:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1329,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1305,
                                      "src": "10160:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 1333,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1332,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 1330,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1311,
                                        "src": "10165:1:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 1331,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10169:1:3",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "10165:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "10160:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "id": 1334,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "10150:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                  "typeString": "tuple(address,address)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10116:56:3"
                            },
                            {
                              "assignments": [
                                1337,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1337,
                                  "mutability": "mutable",
                                  "name": "token0",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1412,
                                  "src": "10187:14:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 1336,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10187:7:3",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 1343,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1340,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1323,
                                    "src": "10233:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1341,
                                    "name": "output",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1325,
                                    "src": "10240:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1338,
                                    "name": "PegasysLibrary",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3476,
                                    "src": "10207:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                      "typeString": "type(library PegasysLibrary)"
                                    }
                                  },
                                  "id": 1339,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sortTokens",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3055,
                                  "src": "10207:25:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                                    "typeString": "function (address,address) pure returns (address,address)"
                                  }
                                },
                                "id": 1342,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10207:40:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                  "typeString": "tuple(address,address)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10186:61:3"
                            },
                            {
                              "assignments": [
                                1345
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1345,
                                  "mutability": "mutable",
                                  "name": "amountOut",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1412,
                                  "src": "10261:17:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1344,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10261:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1351,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1346,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1302,
                                  "src": "10281:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1350,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1349,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 1347,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1311,
                                    "src": "10289:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 1348,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10293:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "10289:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10281:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10261:34:3"
                            },
                            {
                              "assignments": [
                                1353,
                                1355
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1353,
                                  "mutability": "mutable",
                                  "name": "amount0Out",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1412,
                                  "src": "10310:18:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1352,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10310:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 1355,
                                  "mutability": "mutable",
                                  "name": "amount1Out",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1412,
                                  "src": "10330:18:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1354,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10330:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1372,
                              "initialValue": {
                                "argumentTypes": null,
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 1358,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 1356,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1323,
                                    "src": "10352:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 1357,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1337,
                                    "src": "10361:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "10352:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1365,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1345,
                                      "src": "10429:9:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 1368,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10448:1:3",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 1367,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "10440:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 1366,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "10440:7:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 1369,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10440:10:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 1370,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "10428:23:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256)"
                                  }
                                },
                                "id": 1371,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "10352:99:3",
                                "trueExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 1361,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10395:1:3",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 1360,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "10387:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 1359,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "10387:7:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 1362,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10387:10:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1363,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1345,
                                      "src": "10399:9:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 1364,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "10386:23:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256)"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10309:142:3"
                            },
                            {
                              "assignments": [
                                1374
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1374,
                                  "mutability": "mutable",
                                  "name": "to",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 1412,
                                  "src": "10465:10:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 1373,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10465:7:3",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1393,
                              "initialValue": {
                                "argumentTypes": null,
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1380,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 1375,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1311,
                                    "src": "10478:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1379,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1376,
                                        "name": "path",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1305,
                                        "src": "10482:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 1377,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "10482:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 1378,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10496:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "src": "10482:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10478:19:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "argumentTypes": null,
                                  "id": 1391,
                                  "name": "_to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1307,
                                  "src": "10587:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 1392,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "10478:112:3",
                                "trueExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1383,
                                      "name": "factory",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 481,
                                      "src": "10539:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1384,
                                      "name": "output",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1325,
                                      "src": "10548:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1385,
                                        "name": "path",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1305,
                                        "src": "10556:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 1389,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 1388,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 1386,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1311,
                                          "src": "10561:1:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "32",
                                          "id": 1387,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10565:1:3",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "src": "10561:5:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "10556:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1381,
                                      "name": "PegasysLibrary",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3476,
                                      "src": "10516:14:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                        "typeString": "type(library PegasysLibrary)"
                                      }
                                    },
                                    "id": 1382,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "pairFor",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3100,
                                    "src": "10516:22:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                      "typeString": "function (address,address,address) pure returns (address)"
                                    }
                                  },
                                  "id": 1390,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10516:52:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10465:125:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1403,
                                    "name": "amount0Out",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1353,
                                    "src": "10687:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1404,
                                    "name": "amount1Out",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1355,
                                    "src": "10715:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1405,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1374,
                                    "src": "10743:2:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 1408,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10773:1:3",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 1407,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "NewExpression",
                                      "src": "10763:9:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (uint256) pure returns (bytes memory)"
                                      },
                                      "typeName": {
                                        "id": 1406,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10767:5:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_storage_ptr",
                                          "typeString": "bytes"
                                        }
                                      }
                                    },
                                    "id": 1409,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10763:12:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1397,
                                            "name": "factory",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 481,
                                            "src": "10640:7:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 1398,
                                            "name": "input",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1323,
                                            "src": "10649:5:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 1399,
                                            "name": "output",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1325,
                                            "src": "10656:6:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1395,
                                            "name": "PegasysLibrary",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3476,
                                            "src": "10617:14:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                              "typeString": "type(library PegasysLibrary)"
                                            }
                                          },
                                          "id": 1396,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "pairFor",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3100,
                                          "src": "10617:22:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                            "typeString": "function (address,address,address) pure returns (address)"
                                          }
                                        },
                                        "id": 1400,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10617:46:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1394,
                                      "name": "IPegasysPair",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 304,
                                      "src": "10604:12:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IPegasysPair_$304_$",
                                        "typeString": "type(contract IPegasysPair)"
                                      }
                                    },
                                    "id": 1401,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10604:60:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IPegasysPair_$304",
                                      "typeString": "contract IPegasysPair"
                                    }
                                  },
                                  "id": 1402,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "swap",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 288,
                                  "src": "10604:65:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (uint256,uint256,address,bytes memory) external"
                                  }
                                },
                                "id": 1410,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10604:185:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1411,
                              "nodeType": "ExpressionStatement",
                              "src": "10604:185:3"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1313,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1311,
                            "src": "10076:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1314,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1305,
                                "src": "10080:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 1315,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10080:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1316,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10094:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "10080:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10076:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1413,
                        "initializationExpression": {
                          "assignments": [
                            1311
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1311,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 1413,
                              "src": "10065:9:3",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1310,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "10065:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 1312,
                          "initialValue": null,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "10065:9:3"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1320,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "10097:3:3",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 1319,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1311,
                              "src": "10097:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1321,
                          "nodeType": "ExpressionStatement",
                          "src": "10097:3:3"
                        },
                        "nodeType": "ForStatement",
                        "src": "10060:740:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 1415,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_swap",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1308,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1302,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1415,
                        "src": "9950:24:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1300,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "9950:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1301,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "9950:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1305,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1415,
                        "src": "9984:21:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1303,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9984:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1304,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "9984:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1307,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1415,
                        "src": "10015:11:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1306,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10015:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9940:92:3"
                  },
                  "returnParameters": {
                    "id": 1309,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10050:0:3"
                  },
                  "scope": 2502,
                  "src": "9926:880:3",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2757
                  ],
                  "body": {
                    "id": 1486,
                    "nodeType": "Block",
                    "src": "11109:438:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1436,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1434,
                            "src": "11119:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1439,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 481,
                                "src": "11158:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1440,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1417,
                                "src": "11167:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1441,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1422,
                                "src": "11177:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1437,
                                "name": "PegasysLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3476,
                                "src": "11129:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                  "typeString": "type(library PegasysLibrary)"
                                }
                              },
                              "id": 1438,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAmountsOut",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3390,
                              "src": "11129:28:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                              }
                            },
                            "id": 1442,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11129:53:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "11119:63:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 1444,
                        "nodeType": "ExpressionStatement",
                        "src": "11119:63:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1453,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1446,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1434,
                                  "src": "11213:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1451,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1450,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1447,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1434,
                                      "src": "11221:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 1448,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11221:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 1449,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11238:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "11221:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11213:27:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1452,
                                "name": "amountOutMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1419,
                                "src": "11244:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11213:43:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50656761737973526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                              "id": 1454,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11270:43:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b4ccbf9828c5d473c1e4797b0a19d271da6550c5f3e5563dc19cf9a9a73611b1",
                                "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                              },
                              "value": "PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b4ccbf9828c5d473c1e4797b0a19d271da6550c5f3e5563dc19cf9a9a73611b1",
                                "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                              }
                            ],
                            "id": 1445,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11192:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11192:131:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1456,
                        "nodeType": "ExpressionStatement",
                        "src": "11192:131:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1460,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1422,
                                "src": "11378:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 1462,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1461,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11383:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11378:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1463,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "11399:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11399:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1467,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 481,
                                  "src": "11446:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1468,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1422,
                                    "src": "11455:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 1470,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1469,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11460:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "11455:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1471,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1422,
                                    "src": "11464:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 1473,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 1472,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11469:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "11464:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1465,
                                  "name": "PegasysLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3476,
                                  "src": "11423:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                    "typeString": "type(library PegasysLibrary)"
                                  }
                                },
                                "id": 1466,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "pairFor",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3100,
                                "src": "11423:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address,address,address) pure returns (address)"
                                }
                              },
                              "id": 1474,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11423:49:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1475,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1434,
                                "src": "11486:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 1477,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11494:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11486:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1457,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 464,
                              "src": "11333:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$464_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 1459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 438,
                            "src": "11333:31:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 1478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11333:173:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1479,
                        "nodeType": "ExpressionStatement",
                        "src": "11333:173:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1481,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1434,
                              "src": "11522:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1482,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1422,
                              "src": "11531:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1483,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1424,
                              "src": "11537:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1480,
                            "name": "_swap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1415,
                            "src": "11516:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                              "typeString": "function (uint256[] memory,address[] memory,address)"
                            }
                          },
                          "id": 1484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11516:24:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1485,
                        "nodeType": "ExpressionStatement",
                        "src": "11516:24:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "38ed1739",
                  "id": 1487,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1430,
                          "name": "deadline",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1426,
                          "src": "11052:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1431,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1429,
                        "name": "ensure",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 498,
                        "src": "11045:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_uint256_$",
                          "typeString": "modifier (uint256)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11045:16:3"
                    }
                  ],
                  "name": "swapExactTokensForTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1428,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "11028:8:3"
                  },
                  "parameters": {
                    "id": 1427,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1417,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1487,
                        "src": "10855:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1416,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10855:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1419,
                        "mutability": "mutable",
                        "name": "amountOutMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1487,
                        "src": "10881:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1418,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10881:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1422,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1487,
                        "src": "10911:23:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1420,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10911:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1421,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "10911:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1424,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1487,
                        "src": "10944:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1423,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10944:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1426,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1487,
                        "src": "10964:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1425,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10964:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "10845:141:3"
                  },
                  "returnParameters": {
                    "id": 1435,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1434,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1487,
                        "src": "11079:24:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1432,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "11079:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1433,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "11079:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11078:26:3"
                  },
                  "scope": 2502,
                  "src": "10812:735:3",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2774
                  ],
                  "body": {
                    "id": 1555,
                    "nodeType": "Block",
                    "src": "11850:416:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1508,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1506,
                            "src": "11860:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1511,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 481,
                                "src": "11898:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1512,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1489,
                                "src": "11907:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1513,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1494,
                                "src": "11918:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1509,
                                "name": "PegasysLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3476,
                                "src": "11870:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                  "typeString": "type(library PegasysLibrary)"
                                }
                              },
                              "id": 1510,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAmountsIn",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3475,
                              "src": "11870:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                              }
                            },
                            "id": 1514,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11870:53:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "11860:63:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 1516,
                        "nodeType": "ExpressionStatement",
                        "src": "11860:63:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1518,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1506,
                                  "src": "11954:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1520,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1519,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11962:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11954:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1521,
                                "name": "amountInMax",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1491,
                                "src": "11968:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11954:25:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50656761737973526f757465723a204558434553534956455f494e5055545f414d4f554e54",
                              "id": 1523,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11993:39:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ec4047b236e7eb5ae8e252814affff35332fdb0ea84843275b5bd811e5a0bfe6",
                                "typeString": "literal_string \"PegasysRouter: EXCESSIVE_INPUT_AMOUNT\""
                              },
                              "value": "PegasysRouter: EXCESSIVE_INPUT_AMOUNT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ec4047b236e7eb5ae8e252814affff35332fdb0ea84843275b5bd811e5a0bfe6",
                                "typeString": "literal_string \"PegasysRouter: EXCESSIVE_INPUT_AMOUNT\""
                              }
                            ],
                            "id": 1517,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11933:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11933:109:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1525,
                        "nodeType": "ExpressionStatement",
                        "src": "11933:109:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1529,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1494,
                                "src": "12097:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 1531,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1530,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12102:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12097:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1532,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "12118:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12118:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1536,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 481,
                                  "src": "12165:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1537,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1494,
                                    "src": "12174:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 1539,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1538,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12179:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12174:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1540,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1494,
                                    "src": "12183:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 1542,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 1541,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12188:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12183:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1534,
                                  "name": "PegasysLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3476,
                                  "src": "12142:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                    "typeString": "type(library PegasysLibrary)"
                                  }
                                },
                                "id": 1535,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "pairFor",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3100,
                                "src": "12142:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address,address,address) pure returns (address)"
                                }
                              },
                              "id": 1543,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12142:49:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1544,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1506,
                                "src": "12205:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 1546,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1545,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12213:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12205:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1526,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 464,
                              "src": "12052:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$464_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 1528,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 438,
                            "src": "12052:31:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 1547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12052:173:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1548,
                        "nodeType": "ExpressionStatement",
                        "src": "12052:173:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1550,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1506,
                              "src": "12241:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1551,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1494,
                              "src": "12250:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1552,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1496,
                              "src": "12256:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1549,
                            "name": "_swap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1415,
                            "src": "12235:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                              "typeString": "function (uint256[] memory,address[] memory,address)"
                            }
                          },
                          "id": 1553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12235:24:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1554,
                        "nodeType": "ExpressionStatement",
                        "src": "12235:24:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "8803dbee",
                  "id": 1556,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1502,
                          "name": "deadline",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1498,
                          "src": "11793:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1503,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1501,
                        "name": "ensure",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 498,
                        "src": "11786:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_uint256_$",
                          "typeString": "modifier (uint256)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11786:16:3"
                    }
                  ],
                  "name": "swapTokensForExactTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1500,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "11769:8:3"
                  },
                  "parameters": {
                    "id": 1499,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1489,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1556,
                        "src": "11596:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1488,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11596:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1491,
                        "mutability": "mutable",
                        "name": "amountInMax",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1556,
                        "src": "11623:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1490,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11623:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1494,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1556,
                        "src": "11652:23:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1492,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "11652:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1493,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "11652:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1496,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1556,
                        "src": "11685:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1495,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11685:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1498,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1556,
                        "src": "11705:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1497,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11705:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11586:141:3"
                  },
                  "returnParameters": {
                    "id": 1507,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1506,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1556,
                        "src": "11820:24:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1504,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "11820:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1505,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "11820:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11819:26:3"
                  },
                  "scope": 2502,
                  "src": "11553:713:3",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2789
                  ],
                  "body": {
                    "id": 1643,
                    "nodeType": "Block",
                    "src": "12556:540:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1580,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1576,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1561,
                                  "src": "12574:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 1578,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1577,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12579:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12574:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1579,
                                "name": "WSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 484,
                                "src": "12585:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "12574:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50656761737973526f757465723a20494e56414c49445f50415448",
                              "id": 1581,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12591:29:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_90cae87a9eaef4a96ab0b0f8a6013421c43b999ce2d26edbc57b60aa7b8a2487",
                                "typeString": "literal_string \"PegasysRouter: INVALID_PATH\""
                              },
                              "value": "PegasysRouter: INVALID_PATH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_90cae87a9eaef4a96ab0b0f8a6013421c43b999ce2d26edbc57b60aa7b8a2487",
                                "typeString": "literal_string \"PegasysRouter: INVALID_PATH\""
                              }
                            ],
                            "id": 1575,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "12566:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12566:55:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1583,
                        "nodeType": "ExpressionStatement",
                        "src": "12566:55:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1592,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1584,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1573,
                            "src": "12631:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1587,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 481,
                                "src": "12670:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1588,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "12679:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 1589,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "12679:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1590,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1561,
                                "src": "12690:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1585,
                                "name": "PegasysLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3476,
                                "src": "12641:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                  "typeString": "type(library PegasysLibrary)"
                                }
                              },
                              "id": 1586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAmountsOut",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3390,
                              "src": "12641:28:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                              }
                            },
                            "id": 1591,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12641:54:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "12631:64:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 1593,
                        "nodeType": "ExpressionStatement",
                        "src": "12631:64:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1602,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1595,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1573,
                                  "src": "12726:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1600,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1599,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1596,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1573,
                                      "src": "12734:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 1597,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12734:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 1598,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12751:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "12734:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12726:27:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1601,
                                "name": "amountOutMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1558,
                                "src": "12757:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12726:43:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50656761737973526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                              "id": 1603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12783:43:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b4ccbf9828c5d473c1e4797b0a19d271da6550c5f3e5563dc19cf9a9a73611b1",
                                "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                              },
                              "value": "PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b4ccbf9828c5d473c1e4797b0a19d271da6550c5f3e5563dc19cf9a9a73611b1",
                                "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                              }
                            ],
                            "id": 1594,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "12705:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12705:131:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1605,
                        "nodeType": "ExpressionStatement",
                        "src": "12705:131:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1607,
                                    "name": "WSYS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 484,
                                    "src": "12852:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1606,
                                  "name": "IWSYS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3003,
                                  "src": "12846:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWSYS_$3003_$",
                                    "typeString": "type(contract IWSYS)"
                                  }
                                },
                                "id": 1608,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12846:11:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWSYS_$3003",
                                  "typeString": "contract IWSYS"
                                }
                              },
                              "id": 1609,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "deposit",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2981,
                              "src": "12846:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_payable$__$returns$__$",
                                "typeString": "function () payable external"
                              }
                            },
                            "id": 1613,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1610,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1573,
                                  "src": "12873:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1612,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1611,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12881:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12873:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "12846:38:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                              "typeString": "function () payable external"
                            }
                          },
                          "id": 1614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12846:40:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1615,
                        "nodeType": "ExpressionStatement",
                        "src": "12846:40:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1623,
                                      "name": "factory",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 481,
                                      "src": "12977:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1624,
                                        "name": "path",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1561,
                                        "src": "12986:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 1626,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 1625,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "12991:1:3",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12986:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1627,
                                        "name": "path",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1561,
                                        "src": "12995:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 1629,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 1628,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13000:1:3",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "12995:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1621,
                                      "name": "PegasysLibrary",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3476,
                                      "src": "12954:14:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                        "typeString": "type(library PegasysLibrary)"
                                      }
                                    },
                                    "id": 1622,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "pairFor",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3100,
                                    "src": "12954:22:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                      "typeString": "function (address,address,address) pure returns (address)"
                                    }
                                  },
                                  "id": 1630,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12954:49:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1631,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1573,
                                    "src": "13021:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1633,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1632,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13029:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13021:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1618,
                                      "name": "WSYS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 484,
                                      "src": "12922:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 1617,
                                    "name": "IWSYS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3003,
                                    "src": "12916:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IWSYS_$3003_$",
                                      "typeString": "type(contract IWSYS)"
                                    }
                                  },
                                  "id": 1619,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12916:11:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IWSYS_$3003",
                                    "typeString": "contract IWSYS"
                                  }
                                },
                                "id": 1620,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2990,
                                "src": "12916:20:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 1634,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12916:129:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1616,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "12896:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 1635,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12896:159:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1636,
                        "nodeType": "ExpressionStatement",
                        "src": "12896:159:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1638,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1573,
                              "src": "13071:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1639,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1561,
                              "src": "13080:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1640,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1563,
                              "src": "13086:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1637,
                            "name": "_swap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1415,
                            "src": "13065:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                              "typeString": "function (uint256[] memory,address[] memory,address)"
                            }
                          },
                          "id": 1641,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13065:24:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1642,
                        "nodeType": "ExpressionStatement",
                        "src": "13065:24:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "1fef2389",
                  "id": 1644,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1569,
                          "name": "deadline",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1565,
                          "src": "12499:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1570,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1568,
                        "name": "ensure",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 498,
                        "src": "12492:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_uint256_$",
                          "typeString": "modifier (uint256)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "12492:16:3"
                    }
                  ],
                  "name": "swapExactSYSForTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1567,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "12475:8:3"
                  },
                  "parameters": {
                    "id": 1566,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1558,
                        "mutability": "mutable",
                        "name": "amountOutMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1644,
                        "src": "12312:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1557,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12312:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1561,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1644,
                        "src": "12342:23:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1559,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "12342:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1560,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "12342:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1563,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1644,
                        "src": "12375:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1562,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12375:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1565,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1644,
                        "src": "12395:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1564,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12395:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12302:115:3"
                  },
                  "returnParameters": {
                    "id": 1574,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1573,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1644,
                        "src": "12526:24:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1571,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "12526:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1572,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "12526:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "12525:26:3"
                  },
                  "scope": 2502,
                  "src": "12272:824:3",
                  "stateMutability": "payable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2806
                  ],
                  "body": {
                    "id": 1751,
                    "nodeType": "Block",
                    "src": "13396:638:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1673,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1666,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1651,
                                  "src": "13414:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 1671,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1670,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1667,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1651,
                                      "src": "13419:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 1668,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "13419:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 1669,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13433:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "13419:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "13414:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1672,
                                "name": "WSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 484,
                                "src": "13439:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "13414:29:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50656761737973526f757465723a20494e56414c49445f50415448",
                              "id": 1674,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13445:29:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_90cae87a9eaef4a96ab0b0f8a6013421c43b999ce2d26edbc57b60aa7b8a2487",
                                "typeString": "literal_string \"PegasysRouter: INVALID_PATH\""
                              },
                              "value": "PegasysRouter: INVALID_PATH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_90cae87a9eaef4a96ab0b0f8a6013421c43b999ce2d26edbc57b60aa7b8a2487",
                                "typeString": "literal_string \"PegasysRouter: INVALID_PATH\""
                              }
                            ],
                            "id": 1665,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13406:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13406:69:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1676,
                        "nodeType": "ExpressionStatement",
                        "src": "13406:69:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1684,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1677,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1663,
                            "src": "13485:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1680,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 481,
                                "src": "13523:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1681,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1646,
                                "src": "13532:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1682,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1651,
                                "src": "13543:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1678,
                                "name": "PegasysLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3476,
                                "src": "13495:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                  "typeString": "type(library PegasysLibrary)"
                                }
                              },
                              "id": 1679,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAmountsIn",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3475,
                              "src": "13495:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                              }
                            },
                            "id": 1683,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13495:53:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "13485:63:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 1685,
                        "nodeType": "ExpressionStatement",
                        "src": "13485:63:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1691,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1687,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1663,
                                  "src": "13579:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1689,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1688,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13587:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "13579:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1690,
                                "name": "amountInMax",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1648,
                                "src": "13593:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13579:25:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50656761737973526f757465723a204558434553534956455f494e5055545f414d4f554e54",
                              "id": 1692,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13618:39:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ec4047b236e7eb5ae8e252814affff35332fdb0ea84843275b5bd811e5a0bfe6",
                                "typeString": "literal_string \"PegasysRouter: EXCESSIVE_INPUT_AMOUNT\""
                              },
                              "value": "PegasysRouter: EXCESSIVE_INPUT_AMOUNT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ec4047b236e7eb5ae8e252814affff35332fdb0ea84843275b5bd811e5a0bfe6",
                                "typeString": "literal_string \"PegasysRouter: EXCESSIVE_INPUT_AMOUNT\""
                              }
                            ],
                            "id": 1686,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13558:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1693,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13558:109:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1694,
                        "nodeType": "ExpressionStatement",
                        "src": "13558:109:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1698,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1651,
                                "src": "13722:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 1700,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1699,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13727:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13722:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1701,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "13743:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1702,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13743:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1705,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 481,
                                  "src": "13790:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1706,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1651,
                                    "src": "13799:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 1708,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1707,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13804:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13799:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1709,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1651,
                                    "src": "13808:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 1711,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 1710,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13813:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13808:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1703,
                                  "name": "PegasysLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3476,
                                  "src": "13767:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                    "typeString": "type(library PegasysLibrary)"
                                  }
                                },
                                "id": 1704,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "pairFor",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3100,
                                "src": "13767:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address,address,address) pure returns (address)"
                                }
                              },
                              "id": 1712,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13767:49:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1713,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1663,
                                "src": "13830:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 1715,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1714,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13838:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13830:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1695,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 464,
                              "src": "13677:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$464_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 1697,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 438,
                            "src": "13677:31:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 1716,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13677:173:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1717,
                        "nodeType": "ExpressionStatement",
                        "src": "13677:173:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1719,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1663,
                              "src": "13866:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1720,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1651,
                              "src": "13875:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1723,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "13889:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                    "typeString": "contract PegasysRouter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                    "typeString": "contract PegasysRouter"
                                  }
                                ],
                                "id": 1722,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "13881:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1721,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13881:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1724,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13881:13:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 1718,
                            "name": "_swap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1415,
                            "src": "13860:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                              "typeString": "function (uint256[] memory,address[] memory,address)"
                            }
                          },
                          "id": 1725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13860:35:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1726,
                        "nodeType": "ExpressionStatement",
                        "src": "13860:35:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1731,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1663,
                                "src": "13926:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 1736,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1735,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1732,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1663,
                                    "src": "13934:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1733,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "13934:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1734,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13951:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "13934:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13926:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1728,
                                  "name": "WSYS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 484,
                                  "src": "13911:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1727,
                                "name": "IWSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3003,
                                "src": "13905:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWSYS_$3003_$",
                                  "typeString": "type(contract IWSYS)"
                                }
                              },
                              "id": 1729,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13905:11:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWSYS_$3003",
                                "typeString": "contract IWSYS"
                              }
                            },
                            "id": 1730,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "withdraw",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3002,
                            "src": "13905:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) external"
                            }
                          },
                          "id": 1737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13905:49:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1738,
                        "nodeType": "ExpressionStatement",
                        "src": "13905:49:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1742,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1653,
                              "src": "13995:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1743,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1663,
                                "src": "13999:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 1748,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1747,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1744,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1663,
                                    "src": "14007:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1745,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "14007:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1746,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14024:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "14007:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13999:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1739,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 464,
                              "src": "13964:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$464_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 1741,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferSYS",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 463,
                            "src": "13964:30:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 1749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13964:63:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1750,
                        "nodeType": "ExpressionStatement",
                        "src": "13964:63:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "181950fd",
                  "id": 1752,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1659,
                          "name": "deadline",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1655,
                          "src": "13339:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1660,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1658,
                        "name": "ensure",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 498,
                        "src": "13332:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_uint256_$",
                          "typeString": "modifier (uint256)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13332:16:3"
                    }
                  ],
                  "name": "swapTokensForExactSYS",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1657,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "13315:8:3"
                  },
                  "parameters": {
                    "id": 1656,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1646,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1752,
                        "src": "13142:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1645,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13142:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1648,
                        "mutability": "mutable",
                        "name": "amountInMax",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1752,
                        "src": "13169:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1647,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13169:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1651,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1752,
                        "src": "13198:23:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1649,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "13198:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1650,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "13198:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1653,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1752,
                        "src": "13231:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1652,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13231:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1655,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1752,
                        "src": "13251:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1654,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13251:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13132:141:3"
                  },
                  "returnParameters": {
                    "id": 1664,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1663,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1752,
                        "src": "13366:24:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1661,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "13366:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1662,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "13366:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "13365:26:3"
                  },
                  "scope": 2502,
                  "src": "13102:932:3",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2823
                  ],
                  "body": {
                    "id": 1862,
                    "nodeType": "Block",
                    "src": "14334:660:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1781,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1774,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1759,
                                  "src": "14352:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 1779,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1778,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1775,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1759,
                                      "src": "14357:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 1776,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "14357:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 1777,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14371:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "14357:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "14352:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1780,
                                "name": "WSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 484,
                                "src": "14377:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "14352:29:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50656761737973526f757465723a20494e56414c49445f50415448",
                              "id": 1782,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14383:29:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_90cae87a9eaef4a96ab0b0f8a6013421c43b999ce2d26edbc57b60aa7b8a2487",
                                "typeString": "literal_string \"PegasysRouter: INVALID_PATH\""
                              },
                              "value": "PegasysRouter: INVALID_PATH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_90cae87a9eaef4a96ab0b0f8a6013421c43b999ce2d26edbc57b60aa7b8a2487",
                                "typeString": "literal_string \"PegasysRouter: INVALID_PATH\""
                              }
                            ],
                            "id": 1773,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14344:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14344:69:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1784,
                        "nodeType": "ExpressionStatement",
                        "src": "14344:69:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1785,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1771,
                            "src": "14423:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1788,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 481,
                                "src": "14462:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1789,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1754,
                                "src": "14471:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1790,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1759,
                                "src": "14481:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1786,
                                "name": "PegasysLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3476,
                                "src": "14433:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                  "typeString": "type(library PegasysLibrary)"
                                }
                              },
                              "id": 1787,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAmountsOut",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3390,
                              "src": "14433:28:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                              }
                            },
                            "id": 1791,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14433:53:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "14423:63:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 1793,
                        "nodeType": "ExpressionStatement",
                        "src": "14423:63:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1802,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1795,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1771,
                                  "src": "14517:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1800,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1799,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1796,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1771,
                                      "src": "14525:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 1797,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "14525:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 1798,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14542:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "14525:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "14517:27:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1801,
                                "name": "amountOutMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1756,
                                "src": "14548:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14517:43:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50656761737973526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                              "id": 1803,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14574:43:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b4ccbf9828c5d473c1e4797b0a19d271da6550c5f3e5563dc19cf9a9a73611b1",
                                "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                              },
                              "value": "PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b4ccbf9828c5d473c1e4797b0a19d271da6550c5f3e5563dc19cf9a9a73611b1",
                                "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                              }
                            ],
                            "id": 1794,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14496:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14496:131:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1805,
                        "nodeType": "ExpressionStatement",
                        "src": "14496:131:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1809,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1759,
                                "src": "14682:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 1811,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1810,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14687:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14682:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1812,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "14703:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14703:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1816,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 481,
                                  "src": "14750:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1817,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1759,
                                    "src": "14759:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 1819,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1818,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14764:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14759:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1820,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1759,
                                    "src": "14768:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 1822,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 1821,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14773:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14768:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1814,
                                  "name": "PegasysLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3476,
                                  "src": "14727:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                    "typeString": "type(library PegasysLibrary)"
                                  }
                                },
                                "id": 1815,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "pairFor",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3100,
                                "src": "14727:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address,address,address) pure returns (address)"
                                }
                              },
                              "id": 1823,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14727:49:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1824,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1771,
                                "src": "14790:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 1826,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1825,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14798:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14790:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1806,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 464,
                              "src": "14637:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$464_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 1808,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 438,
                            "src": "14637:31:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 1827,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14637:173:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1828,
                        "nodeType": "ExpressionStatement",
                        "src": "14637:173:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1830,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1771,
                              "src": "14826:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1831,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1759,
                              "src": "14835:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1834,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "14849:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                    "typeString": "contract PegasysRouter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                    "typeString": "contract PegasysRouter"
                                  }
                                ],
                                "id": 1833,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "14841:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1832,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14841:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1835,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14841:13:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 1829,
                            "name": "_swap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1415,
                            "src": "14820:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                              "typeString": "function (uint256[] memory,address[] memory,address)"
                            }
                          },
                          "id": 1836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14820:35:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1837,
                        "nodeType": "ExpressionStatement",
                        "src": "14820:35:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1842,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1771,
                                "src": "14886:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 1847,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1846,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1843,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1771,
                                    "src": "14894:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1844,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "14894:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1845,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14911:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "14894:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14886:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1839,
                                  "name": "WSYS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 484,
                                  "src": "14871:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1838,
                                "name": "IWSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3003,
                                "src": "14865:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWSYS_$3003_$",
                                  "typeString": "type(contract IWSYS)"
                                }
                              },
                              "id": 1840,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14865:11:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWSYS_$3003",
                                "typeString": "contract IWSYS"
                              }
                            },
                            "id": 1841,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "withdraw",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3002,
                            "src": "14865:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) external"
                            }
                          },
                          "id": 1848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14865:49:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1849,
                        "nodeType": "ExpressionStatement",
                        "src": "14865:49:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1853,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1761,
                              "src": "14955:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1854,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1771,
                                "src": "14959:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 1859,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1858,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1855,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1771,
                                    "src": "14967:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1856,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "14967:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1857,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14984:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "14967:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14959:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1850,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 464,
                              "src": "14924:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$464_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 1852,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferSYS",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 463,
                            "src": "14924:30:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 1860,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14924:63:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1861,
                        "nodeType": "ExpressionStatement",
                        "src": "14924:63:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "c78c12cf",
                  "id": 1863,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1767,
                          "name": "deadline",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1763,
                          "src": "14277:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1768,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1766,
                        "name": "ensure",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 498,
                        "src": "14270:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_uint256_$",
                          "typeString": "modifier (uint256)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "14270:16:3"
                    }
                  ],
                  "name": "swapExactTokensForSYS",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1765,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "14253:8:3"
                  },
                  "parameters": {
                    "id": 1764,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1754,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1863,
                        "src": "14080:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1753,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14080:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1756,
                        "mutability": "mutable",
                        "name": "amountOutMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1863,
                        "src": "14106:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1755,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14106:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1759,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1863,
                        "src": "14136:23:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1757,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "14136:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1758,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "14136:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1761,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1863,
                        "src": "14169:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1760,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14169:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1763,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1863,
                        "src": "14189:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1762,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14189:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14070:141:3"
                  },
                  "returnParameters": {
                    "id": 1772,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1771,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1863,
                        "src": "14304:24:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1769,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "14304:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1770,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "14304:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "14303:26:3"
                  },
                  "scope": 2502,
                  "src": "14040:954:3",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2838
                  ],
                  "body": {
                    "id": 1967,
                    "nodeType": "Block",
                    "src": "15281:666:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1887,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1883,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1868,
                                  "src": "15299:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 1885,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1884,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15304:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15299:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1886,
                                "name": "WSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 484,
                                "src": "15310:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "15299:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50656761737973526f757465723a20494e56414c49445f50415448",
                              "id": 1888,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15316:29:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_90cae87a9eaef4a96ab0b0f8a6013421c43b999ce2d26edbc57b60aa7b8a2487",
                                "typeString": "literal_string \"PegasysRouter: INVALID_PATH\""
                              },
                              "value": "PegasysRouter: INVALID_PATH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_90cae87a9eaef4a96ab0b0f8a6013421c43b999ce2d26edbc57b60aa7b8a2487",
                                "typeString": "literal_string \"PegasysRouter: INVALID_PATH\""
                              }
                            ],
                            "id": 1882,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15291:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15291:55:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1890,
                        "nodeType": "ExpressionStatement",
                        "src": "15291:55:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1891,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1880,
                            "src": "15356:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1894,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 481,
                                "src": "15394:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1895,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1865,
                                "src": "15403:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1896,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1868,
                                "src": "15414:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1892,
                                "name": "PegasysLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3476,
                                "src": "15366:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                  "typeString": "type(library PegasysLibrary)"
                                }
                              },
                              "id": 1893,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getAmountsIn",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3475,
                              "src": "15366:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                              }
                            },
                            "id": 1897,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15366:53:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "15356:63:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 1899,
                        "nodeType": "ExpressionStatement",
                        "src": "15356:63:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1906,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1901,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1880,
                                  "src": "15450:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1903,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1902,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15458:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15450:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1904,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "15464:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 1905,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15464:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "15450:23:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50656761737973526f757465723a204558434553534956455f494e5055545f414d4f554e54",
                              "id": 1907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15487:39:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ec4047b236e7eb5ae8e252814affff35332fdb0ea84843275b5bd811e5a0bfe6",
                                "typeString": "literal_string \"PegasysRouter: EXCESSIVE_INPUT_AMOUNT\""
                              },
                              "value": "PegasysRouter: EXCESSIVE_INPUT_AMOUNT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ec4047b236e7eb5ae8e252814affff35332fdb0ea84843275b5bd811e5a0bfe6",
                                "typeString": "literal_string \"PegasysRouter: EXCESSIVE_INPUT_AMOUNT\""
                              }
                            ],
                            "id": 1900,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15429:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15429:107:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1909,
                        "nodeType": "ExpressionStatement",
                        "src": "15429:107:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1911,
                                    "name": "WSYS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 484,
                                    "src": "15552:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1910,
                                  "name": "IWSYS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3003,
                                  "src": "15546:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWSYS_$3003_$",
                                    "typeString": "type(contract IWSYS)"
                                  }
                                },
                                "id": 1912,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15546:11:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWSYS_$3003",
                                  "typeString": "contract IWSYS"
                                }
                              },
                              "id": 1913,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "deposit",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2981,
                              "src": "15546:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_payable$__$returns$__$",
                                "typeString": "function () payable external"
                              }
                            },
                            "id": 1917,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1914,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1880,
                                  "src": "15573:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1916,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1915,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15581:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15573:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "15546:38:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                              "typeString": "function () payable external"
                            }
                          },
                          "id": 1918,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15546:40:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1919,
                        "nodeType": "ExpressionStatement",
                        "src": "15546:40:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1927,
                                      "name": "factory",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 481,
                                      "src": "15677:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1928,
                                        "name": "path",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1868,
                                        "src": "15686:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 1930,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 1929,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15691:1:3",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "15686:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1931,
                                        "name": "path",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1868,
                                        "src": "15695:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 1933,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 1932,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15700:1:3",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "15695:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1925,
                                      "name": "PegasysLibrary",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3476,
                                      "src": "15654:14:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                        "typeString": "type(library PegasysLibrary)"
                                      }
                                    },
                                    "id": 1926,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "pairFor",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3100,
                                    "src": "15654:22:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                      "typeString": "function (address,address,address) pure returns (address)"
                                    }
                                  },
                                  "id": 1934,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15654:49:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1935,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1880,
                                    "src": "15721:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1937,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1936,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15729:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "15721:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1922,
                                      "name": "WSYS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 484,
                                      "src": "15622:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 1921,
                                    "name": "IWSYS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3003,
                                    "src": "15616:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IWSYS_$3003_$",
                                      "typeString": "type(contract IWSYS)"
                                    }
                                  },
                                  "id": 1923,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15616:11:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IWSYS_$3003",
                                    "typeString": "contract IWSYS"
                                  }
                                },
                                "id": 1924,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2990,
                                "src": "15616:20:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 1938,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15616:129:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1920,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "15596:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 1939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15596:159:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1940,
                        "nodeType": "ExpressionStatement",
                        "src": "15596:159:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1942,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1880,
                              "src": "15771:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1943,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1868,
                              "src": "15780:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1944,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1870,
                              "src": "15786:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1941,
                            "name": "_swap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1415,
                            "src": "15765:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                              "typeString": "function (uint256[] memory,address[] memory,address)"
                            }
                          },
                          "id": 1945,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15765:24:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1946,
                        "nodeType": "ExpressionStatement",
                        "src": "15765:24:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1947,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "15838:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1948,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "15838:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1949,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1880,
                              "src": "15850:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1951,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1950,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15858:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15850:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15838:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1966,
                        "nodeType": "IfStatement",
                        "src": "15834:106:3",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1956,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "15905:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 1957,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15905:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1963,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1958,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "15917:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 1959,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "15917:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1960,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1880,
                                    "src": "15929:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1962,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1961,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15937:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "15929:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15917:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1953,
                                "name": "TransferHelper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 464,
                                "src": "15874:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TransferHelper_$464_$",
                                  "typeString": "type(library TransferHelper)"
                                }
                              },
                              "id": 1955,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "safeTransferSYS",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 463,
                              "src": "15874:30:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                "typeString": "function (address,uint256)"
                              }
                            },
                            "id": 1964,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15874:66:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 1965,
                          "nodeType": "ExpressionStatement",
                          "src": "15874:66:3"
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "08e4e89e",
                  "id": 1968,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1876,
                          "name": "deadline",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1872,
                          "src": "15224:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1877,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 1875,
                        "name": "ensure",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 498,
                        "src": "15217:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_uint256_$",
                          "typeString": "modifier (uint256)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "15217:16:3"
                    }
                  ],
                  "name": "swapSYSForExactTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1874,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "15200:8:3"
                  },
                  "parameters": {
                    "id": 1873,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1865,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1968,
                        "src": "15040:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1864,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15040:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1868,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1968,
                        "src": "15067:23:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1866,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "15067:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1867,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "15067:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1870,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1968,
                        "src": "15100:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1869,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15100:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1872,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1968,
                        "src": "15120:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1871,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15120:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15030:112:3"
                  },
                  "returnParameters": {
                    "id": 1881,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1880,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1968,
                        "src": "15251:24:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1878,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "15251:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1879,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "15251:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "15250:26:3"
                  },
                  "scope": 2502,
                  "src": "15000:947:3",
                  "stateMutability": "payable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2131,
                    "nodeType": "Block",
                    "src": "16209:1405:3",
                    "statements": [
                      {
                        "body": {
                          "id": 2129,
                          "nodeType": "Block",
                          "src": "16261:1347:3",
                          "statements": [
                            {
                              "assignments": [
                                1989,
                                1991
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1989,
                                  "mutability": "mutable",
                                  "name": "input",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2129,
                                  "src": "16276:13:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 1988,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16276:7:3",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 1991,
                                  "mutability": "mutable",
                                  "name": "output",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2129,
                                  "src": "16291:14:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 1990,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16291:7:3",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2001,
                              "initialValue": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1992,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1971,
                                      "src": "16310:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 1994,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1993,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1977,
                                      "src": "16315:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "16310:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1995,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1971,
                                      "src": "16319:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 1999,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1998,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 1996,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1977,
                                        "src": "16324:1:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 1997,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "16328:1:3",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "16324:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "16319:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "id": 2000,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "16309:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                  "typeString": "tuple(address,address)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16275:56:3"
                            },
                            {
                              "assignments": [
                                2003,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2003,
                                  "mutability": "mutable",
                                  "name": "token0",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2129,
                                  "src": "16346:14:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 2002,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16346:7:3",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 2009,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2006,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1989,
                                    "src": "16392:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2007,
                                    "name": "output",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1991,
                                    "src": "16399:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2004,
                                    "name": "PegasysLibrary",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3476,
                                    "src": "16366:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                      "typeString": "type(library PegasysLibrary)"
                                    }
                                  },
                                  "id": 2005,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sortTokens",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3055,
                                  "src": "16366:25:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                                    "typeString": "function (address,address) pure returns (address,address)"
                                  }
                                },
                                "id": 2008,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16366:40:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                  "typeString": "tuple(address,address)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16345:61:3"
                            },
                            {
                              "assignments": [
                                2011
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2011,
                                  "mutability": "mutable",
                                  "name": "pair",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2129,
                                  "src": "16420:17:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IPegasysPair_$304",
                                    "typeString": "contract IPegasysPair"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 2010,
                                    "name": "IPegasysPair",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 304,
                                    "src": "16420:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IPegasysPair_$304",
                                      "typeString": "contract IPegasysPair"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2020,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2015,
                                        "name": "factory",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 481,
                                        "src": "16493:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 2016,
                                        "name": "input",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1989,
                                        "src": "16502:5:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 2017,
                                        "name": "output",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1991,
                                        "src": "16509:6:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2013,
                                        "name": "PegasysLibrary",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3476,
                                        "src": "16470:14:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                          "typeString": "type(library PegasysLibrary)"
                                        }
                                      },
                                      "id": 2014,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "pairFor",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3100,
                                      "src": "16470:22:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                        "typeString": "function (address,address,address) pure returns (address)"
                                      }
                                    },
                                    "id": 2018,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16470:46:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2012,
                                  "name": "IPegasysPair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 304,
                                  "src": "16440:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IPegasysPair_$304_$",
                                    "typeString": "type(contract IPegasysPair)"
                                  }
                                },
                                "id": 2019,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16440:90:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPegasysPair_$304",
                                  "typeString": "contract IPegasysPair"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16420:110:3"
                            },
                            {
                              "assignments": [
                                2022
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2022,
                                  "mutability": "mutable",
                                  "name": "amountInput",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2129,
                                  "src": "16544:19:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2021,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16544:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2023,
                              "initialValue": null,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16544:19:3"
                            },
                            {
                              "assignments": [
                                2025
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2025,
                                  "mutability": "mutable",
                                  "name": "amountOutput",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2129,
                                  "src": "16577:20:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2024,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16577:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2026,
                              "initialValue": null,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16577:20:3"
                            },
                            {
                              "id": 2074,
                              "nodeType": "Block",
                              "src": "16611:621:3",
                              "statements": [
                                {
                                  "assignments": [
                                    2028,
                                    2030,
                                    null
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 2028,
                                      "mutability": "mutable",
                                      "name": "reserve0",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 2074,
                                      "src": "16686:16:3",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 2027,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16686:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    },
                                    {
                                      "constant": false,
                                      "id": 2030,
                                      "mutability": "mutable",
                                      "name": "reserve1",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 2074,
                                      "src": "16704:16:3",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 2029,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16704:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    },
                                    null
                                  ],
                                  "id": 2034,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2031,
                                        "name": "pair",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2011,
                                        "src": "16726:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IPegasysPair_$304",
                                          "typeString": "contract IPegasysPair"
                                        }
                                      },
                                      "id": 2032,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getReserves",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 246,
                                      "src": "16726:16:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                                        "typeString": "function () view external returns (uint112,uint112,uint32)"
                                      }
                                    },
                                    "id": 2033,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16726:18:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                                      "typeString": "tuple(uint112,uint112,uint32)"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "16685:59:3"
                                },
                                {
                                  "assignments": [
                                    2036,
                                    2038
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 2036,
                                      "mutability": "mutable",
                                      "name": "reserveInput",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 2074,
                                      "src": "16763:20:3",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 2035,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16763:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    },
                                    {
                                      "constant": false,
                                      "id": 2038,
                                      "mutability": "mutable",
                                      "name": "reserveOutput",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 2074,
                                      "src": "16785:21:3",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 2037,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16785:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 2049,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "condition": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 2041,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 2039,
                                        "name": "input",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1989,
                                        "src": "16810:5:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 2040,
                                        "name": "token0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2003,
                                        "src": "16819:6:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "16810:15:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2045,
                                          "name": "reserve1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2030,
                                          "src": "16892:8:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2046,
                                          "name": "reserve0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2028,
                                          "src": "16902:8:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 2047,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "16891:20:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "id": 2048,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "16810:101:3",
                                    "trueExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2042,
                                          "name": "reserve0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2028,
                                          "src": "16849:8:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2043,
                                          "name": "reserve1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2030,
                                          "src": "16859:8:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 2044,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "16848:20:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                      "typeString": "tuple(uint256,uint256)"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "16762:149:3"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2063,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 2050,
                                      "name": "amountInput",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2022,
                                      "src": "16929:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2061,
                                          "name": "reserveInput",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2036,
                                          "src": "17007:12:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 2057,
                                                  "name": "pair",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2011,
                                                  "src": "16975:4:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IPegasysPair_$304",
                                                    "typeString": "contract IPegasysPair"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_contract$_IPegasysPair_$304",
                                                    "typeString": "contract IPegasysPair"
                                                  }
                                                ],
                                                "id": 2056,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "16967:7:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_address_$",
                                                  "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                  "id": 2055,
                                                  "name": "address",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "16967:7:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": null,
                                                    "typeString": null
                                                  }
                                                }
                                              },
                                              "id": 2058,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "16967:13:3",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 2052,
                                                  "name": "input",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1989,
                                                  "src": "16950:5:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "id": 2051,
                                                "name": "IERC20",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2586,
                                                "src": "16943:6:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$2586_$",
                                                  "typeString": "type(contract IERC20)"
                                                }
                                              },
                                              "id": 2053,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "16943:13:3",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$2586",
                                                "typeString": "contract IERC20"
                                              }
                                            },
                                            "id": 2054,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "balanceOf",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2547,
                                            "src": "16943:23:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                              "typeString": "function (address) view external returns (uint256)"
                                            }
                                          },
                                          "id": 2059,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "16943:38:3",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2060,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sub",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3522,
                                        "src": "16943:42:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 2062,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16943:94:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "16929:108:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2064,
                                  "nodeType": "ExpressionStatement",
                                  "src": "16929:108:3"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2072,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 2065,
                                      "name": "amountOutput",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2025,
                                      "src": "17055:12:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2068,
                                          "name": "amountInput",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2022,
                                          "src": "17119:11:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2069,
                                          "name": "reserveInput",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2036,
                                          "src": "17152:12:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2070,
                                          "name": "reserveOutput",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2038,
                                          "src": "17186:13:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2066,
                                          "name": "PegasysLibrary",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3476,
                                          "src": "17070:14:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                            "typeString": "type(library PegasysLibrary)"
                                          }
                                        },
                                        "id": 2067,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "getAmountOut",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3249,
                                        "src": "17070:27:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 2071,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17070:147:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "17055:162:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2073,
                                  "nodeType": "ExpressionStatement",
                                  "src": "17055:162:3"
                                }
                              ]
                            },
                            {
                              "assignments": [
                                2076,
                                2078
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2076,
                                  "mutability": "mutable",
                                  "name": "amount0Out",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2129,
                                  "src": "17246:18:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2075,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17246:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 2078,
                                  "mutability": "mutable",
                                  "name": "amount1Out",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2129,
                                  "src": "17266:18:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2077,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17266:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2095,
                              "initialValue": {
                                "argumentTypes": null,
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 2081,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2079,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1989,
                                    "src": "17288:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 2080,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2003,
                                    "src": "17297:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "17288:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2088,
                                      "name": "amountOutput",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2025,
                                      "src": "17368:12:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 2091,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17390:1:3",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 2090,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "17382:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 2089,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "17382:7:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 2092,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17382:10:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 2093,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "17367:26:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256)"
                                  }
                                },
                                "id": 2094,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "17288:105:3",
                                "trueExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "30",
                                          "id": 2084,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17331:1:3",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 2083,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "17323:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 2082,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "17323:7:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 2085,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17323:10:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 2086,
                                      "name": "amountOutput",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2025,
                                      "src": "17335:12:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 2087,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "17322:26:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256)"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "17245:148:3"
                            },
                            {
                              "assignments": [
                                2097
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2097,
                                  "mutability": "mutable",
                                  "name": "to",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 2129,
                                  "src": "17407:10:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 2096,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17407:7:3",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2116,
                              "initialValue": {
                                "argumentTypes": null,
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2103,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2098,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1977,
                                    "src": "17420:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2102,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2099,
                                        "name": "path",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1971,
                                        "src": "17424:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 2100,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "17424:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 2101,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17438:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "src": "17424:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "17420:19:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "argumentTypes": null,
                                  "id": 2114,
                                  "name": "_to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1973,
                                  "src": "17529:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 2115,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "17420:112:3",
                                "trueExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2106,
                                      "name": "factory",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 481,
                                      "src": "17481:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 2107,
                                      "name": "output",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1991,
                                      "src": "17490:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 2108,
                                        "name": "path",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1971,
                                        "src": "17498:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 2112,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 2111,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 2109,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1977,
                                          "src": "17503:1:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "32",
                                          "id": 2110,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17507:1:3",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "src": "17503:5:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "17498:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2104,
                                      "name": "PegasysLibrary",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3476,
                                      "src": "17458:14:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                        "typeString": "type(library PegasysLibrary)"
                                      }
                                    },
                                    "id": 2105,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "pairFor",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3100,
                                    "src": "17458:22:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                      "typeString": "function (address,address,address) pure returns (address)"
                                    }
                                  },
                                  "id": 2113,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17458:52:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "17407:125:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2120,
                                    "name": "amount0Out",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2076,
                                    "src": "17556:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2121,
                                    "name": "amount1Out",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2078,
                                    "src": "17568:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2122,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2097,
                                    "src": "17580:2:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 2125,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17594:1:3",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 2124,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "NewExpression",
                                      "src": "17584:9:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (uint256) pure returns (bytes memory)"
                                      },
                                      "typeName": {
                                        "id": 2123,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17588:5:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_storage_ptr",
                                          "typeString": "bytes"
                                        }
                                      }
                                    },
                                    "id": 2126,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17584:12:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2117,
                                    "name": "pair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2011,
                                    "src": "17546:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IPegasysPair_$304",
                                      "typeString": "contract IPegasysPair"
                                    }
                                  },
                                  "id": 2119,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "swap",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 288,
                                  "src": "17546:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (uint256,uint256,address,bytes memory) external"
                                  }
                                },
                                "id": 2127,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17546:51:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2128,
                              "nodeType": "ExpressionStatement",
                              "src": "17546:51:3"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1979,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1977,
                            "src": "16235:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1983,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1980,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1971,
                                "src": "16239:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 1981,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "16239:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1982,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16253:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "16239:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16235:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2130,
                        "initializationExpression": {
                          "assignments": [
                            1977
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1977,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 2130,
                              "src": "16224:9:3",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1976,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "16224:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 1978,
                          "initialValue": null,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "16224:9:3"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1986,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "16256:3:3",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 1985,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1977,
                              "src": "16256:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1987,
                          "nodeType": "ExpressionStatement",
                          "src": "16256:3:3"
                        },
                        "nodeType": "ForStatement",
                        "src": "16219:1389:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 2132,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_swapSupportingFeeOnTransferTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1974,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1971,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2132,
                        "src": "16143:21:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1969,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "16143:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1970,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "16143:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1973,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2132,
                        "src": "16174:11:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1972,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16174:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "16133:58:3"
                  },
                  "returnParameters": {
                    "id": 1975,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16209:0:3"
                  },
                  "scope": 2502,
                  "src": "16090:1524:3",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2949
                  ],
                  "body": {
                    "id": 2210,
                    "nodeType": "Block",
                    "src": "17867:511:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2153,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2139,
                                "src": "17922:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 2155,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17927:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "17922:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2156,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "17943:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2157,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "17943:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2160,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 481,
                                  "src": "17990:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2161,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2139,
                                    "src": "17999:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 2163,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2162,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18004:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "17999:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2164,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2139,
                                    "src": "18008:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 2166,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 2165,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18013:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18008:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2158,
                                  "name": "PegasysLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3476,
                                  "src": "17967:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                    "typeString": "type(library PegasysLibrary)"
                                  }
                                },
                                "id": 2159,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "pairFor",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3100,
                                "src": "17967:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address,address,address) pure returns (address)"
                                }
                              },
                              "id": 2167,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17967:49:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2168,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2134,
                              "src": "18030:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2150,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 464,
                              "src": "17877:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$464_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 2152,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 438,
                            "src": "17877:31:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 2169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17877:171:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2170,
                        "nodeType": "ExpressionStatement",
                        "src": "17877:171:3"
                      },
                      {
                        "assignments": [
                          2172
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2172,
                            "mutability": "mutable",
                            "name": "balanceBefore",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2210,
                            "src": "18058:21:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2171,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18058:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2184,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2182,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2141,
                              "src": "18122:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2174,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2139,
                                    "src": "18089:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 2179,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2178,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2175,
                                        "name": "path",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2139,
                                        "src": "18094:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 2176,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "18094:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 2177,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18108:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "18094:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18089:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2173,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2586,
                                "src": "18082:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$2586_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 2180,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18082:29:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2586",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2181,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2547,
                            "src": "18082:39:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 2183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18082:43:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18058:67:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2186,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2139,
                              "src": "18170:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2187,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2141,
                              "src": "18176:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2185,
                            "name": "_swapSupportingFeeOnTransferTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2132,
                            "src": "18135:34:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                              "typeString": "function (address[] memory,address)"
                            }
                          },
                          "id": 2188,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18135:44:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2189,
                        "nodeType": "ExpressionStatement",
                        "src": "18135:44:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2206,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2203,
                                    "name": "balanceBefore",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2172,
                                    "src": "18258:13:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2200,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2141,
                                        "src": "18250:2:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 2192,
                                              "name": "path",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2139,
                                              "src": "18217:4:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                "typeString": "address[] calldata"
                                              }
                                            },
                                            "id": 2197,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 2196,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 2193,
                                                  "name": "path",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2139,
                                                  "src": "18222:4:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                    "typeString": "address[] calldata"
                                                  }
                                                },
                                                "id": 2194,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "length",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": null,
                                                "src": "18222:11:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "31",
                                                "id": 2195,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "18236:1:3",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "18222:15:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "18217:21:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 2191,
                                          "name": "IERC20",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2586,
                                          "src": "18210:6:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC20_$2586_$",
                                            "typeString": "type(contract IERC20)"
                                          }
                                        },
                                        "id": 2198,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "18210:29:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$2586",
                                          "typeString": "contract IERC20"
                                        }
                                      },
                                      "id": 2199,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "balanceOf",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2547,
                                      "src": "18210:39:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address) view external returns (uint256)"
                                      }
                                    },
                                    "id": 2201,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "18210:43:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2202,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3522,
                                  "src": "18210:47:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2204,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18210:62:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2205,
                                "name": "amountOutMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2136,
                                "src": "18292:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "18210:94:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50656761737973526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                              "id": 2207,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18318:43:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b4ccbf9828c5d473c1e4797b0a19d271da6550c5f3e5563dc19cf9a9a73611b1",
                                "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                              },
                              "value": "PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b4ccbf9828c5d473c1e4797b0a19d271da6550c5f3e5563dc19cf9a9a73611b1",
                                "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                              }
                            ],
                            "id": 2190,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "18189:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18189:182:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2209,
                        "nodeType": "ExpressionStatement",
                        "src": "18189:182:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "5c11d795",
                  "id": 2211,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2147,
                          "name": "deadline",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2143,
                          "src": "17857:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 2148,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 2146,
                        "name": "ensure",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 498,
                        "src": "17850:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_uint256_$",
                          "typeString": "modifier (uint256)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "17850:16:3"
                    }
                  ],
                  "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2145,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "17841:8:3"
                  },
                  "parameters": {
                    "id": 2144,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2134,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2211,
                        "src": "17692:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2133,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17692:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2136,
                        "mutability": "mutable",
                        "name": "amountOutMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2211,
                        "src": "17718:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2135,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17718:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2139,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2211,
                        "src": "17748:23:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2137,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "17748:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2138,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "17748:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2141,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2211,
                        "src": "17781:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2140,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17781:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2143,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2211,
                        "src": "17801:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2142,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17801:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "17682:141:3"
                  },
                  "returnParameters": {
                    "id": 2149,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17867:0:3"
                  },
                  "scope": 2502,
                  "src": "17620:758:3",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2961
                  ],
                  "body": {
                    "id": 2307,
                    "nodeType": "Block",
                    "src": "18610:648:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2232,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2228,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2216,
                                  "src": "18628:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 2230,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2229,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "18633:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "18628:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2231,
                                "name": "WSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 484,
                                "src": "18639:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "18628:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50656761737973526f757465723a20494e56414c49445f50415448",
                              "id": 2233,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18645:29:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_90cae87a9eaef4a96ab0b0f8a6013421c43b999ce2d26edbc57b60aa7b8a2487",
                                "typeString": "literal_string \"PegasysRouter: INVALID_PATH\""
                              },
                              "value": "PegasysRouter: INVALID_PATH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_90cae87a9eaef4a96ab0b0f8a6013421c43b999ce2d26edbc57b60aa7b8a2487",
                                "typeString": "literal_string \"PegasysRouter: INVALID_PATH\""
                              }
                            ],
                            "id": 2227,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "18620:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2234,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18620:55:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2235,
                        "nodeType": "ExpressionStatement",
                        "src": "18620:55:3"
                      },
                      {
                        "assignments": [
                          2237
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2237,
                            "mutability": "mutable",
                            "name": "amountIn",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2307,
                            "src": "18685:16:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2236,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18685:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2240,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2238,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "18704:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "18704:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18685:28:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2242,
                                    "name": "WSYS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 484,
                                    "src": "18729:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2241,
                                  "name": "IWSYS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3003,
                                  "src": "18723:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWSYS_$3003_$",
                                    "typeString": "type(contract IWSYS)"
                                  }
                                },
                                "id": 2243,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18723:11:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWSYS_$3003",
                                  "typeString": "contract IWSYS"
                                }
                              },
                              "id": 2244,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "deposit",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2981,
                              "src": "18723:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_payable$__$returns$__$",
                                "typeString": "function () payable external"
                              }
                            },
                            "id": 2246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "argumentTypes": null,
                                "id": 2245,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2237,
                                "src": "18750:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "18723:36:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                              "typeString": "function () payable external"
                            }
                          },
                          "id": 2247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18723:38:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2248,
                        "nodeType": "ExpressionStatement",
                        "src": "18723:38:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2256,
                                      "name": "factory",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 481,
                                      "src": "18852:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 2257,
                                        "name": "path",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2216,
                                        "src": "18861:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 2259,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 2258,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "18866:1:3",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "18861:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 2260,
                                        "name": "path",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2216,
                                        "src": "18870:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 2262,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 2261,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "18875:1:3",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "18870:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2254,
                                      "name": "PegasysLibrary",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3476,
                                      "src": "18829:14:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                        "typeString": "type(library PegasysLibrary)"
                                      }
                                    },
                                    "id": 2255,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "pairFor",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3100,
                                    "src": "18829:22:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                      "typeString": "function (address,address,address) pure returns (address)"
                                    }
                                  },
                                  "id": 2263,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18829:49:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2264,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2237,
                                  "src": "18896:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2251,
                                      "name": "WSYS",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 484,
                                      "src": "18797:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2250,
                                    "name": "IWSYS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3003,
                                    "src": "18791:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IWSYS_$3003_$",
                                      "typeString": "type(contract IWSYS)"
                                    }
                                  },
                                  "id": 2252,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18791:11:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IWSYS_$3003",
                                    "typeString": "contract IWSYS"
                                  }
                                },
                                "id": 2253,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2990,
                                "src": "18791:20:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 2265,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18791:127:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2249,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "18771:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 2266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18771:157:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2267,
                        "nodeType": "ExpressionStatement",
                        "src": "18771:157:3"
                      },
                      {
                        "assignments": [
                          2269
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2269,
                            "mutability": "mutable",
                            "name": "balanceBefore",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2307,
                            "src": "18938:21:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2268,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18938:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2281,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2279,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2218,
                              "src": "19002:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2271,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2216,
                                    "src": "18969:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 2276,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2275,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2272,
                                        "name": "path",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2216,
                                        "src": "18974:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                          "typeString": "address[] calldata"
                                        }
                                      },
                                      "id": 2273,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "18974:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 2274,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18988:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "18974:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "18969:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2270,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2586,
                                "src": "18962:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$2586_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 2277,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18962:29:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2586",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2278,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2547,
                            "src": "18962:39:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 2280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18962:43:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18938:67:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2283,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2216,
                              "src": "19050:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2284,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2218,
                              "src": "19056:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2282,
                            "name": "_swapSupportingFeeOnTransferTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2132,
                            "src": "19015:34:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                              "typeString": "function (address[] memory,address)"
                            }
                          },
                          "id": 2285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19015:44:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2286,
                        "nodeType": "ExpressionStatement",
                        "src": "19015:44:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2300,
                                    "name": "balanceBefore",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2269,
                                    "src": "19138:13:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2297,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2218,
                                        "src": "19130:2:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 2289,
                                              "name": "path",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2216,
                                              "src": "19097:4:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                "typeString": "address[] calldata"
                                              }
                                            },
                                            "id": 2294,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 2293,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 2290,
                                                  "name": "path",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2216,
                                                  "src": "19102:4:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                    "typeString": "address[] calldata"
                                                  }
                                                },
                                                "id": 2291,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "length",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": null,
                                                "src": "19102:11:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "hexValue": "31",
                                                "id": 2292,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "19116:1:3",
                                                "subdenomination": null,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "19102:15:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "19097:21:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 2288,
                                          "name": "IERC20",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2586,
                                          "src": "19090:6:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC20_$2586_$",
                                            "typeString": "type(contract IERC20)"
                                          }
                                        },
                                        "id": 2295,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "19090:29:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$2586",
                                          "typeString": "contract IERC20"
                                        }
                                      },
                                      "id": 2296,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "balanceOf",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2547,
                                      "src": "19090:39:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address) view external returns (uint256)"
                                      }
                                    },
                                    "id": 2298,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "19090:43:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 2299,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3522,
                                  "src": "19090:47:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 2301,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19090:62:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2302,
                                "name": "amountOutMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2213,
                                "src": "19172:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "19090:94:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50656761737973526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                              "id": 2304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19198:43:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b4ccbf9828c5d473c1e4797b0a19d271da6550c5f3e5563dc19cf9a9a73611b1",
                                "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                              },
                              "value": "PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b4ccbf9828c5d473c1e4797b0a19d271da6550c5f3e5563dc19cf9a9a73611b1",
                                "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                              }
                            ],
                            "id": 2287,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "19069:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19069:182:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2306,
                        "nodeType": "ExpressionStatement",
                        "src": "19069:182:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "00121258",
                  "id": 2308,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2224,
                          "name": "deadline",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2220,
                          "src": "18600:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 2225,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 2223,
                        "name": "ensure",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 498,
                        "src": "18593:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_uint256_$",
                          "typeString": "modifier (uint256)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "18593:16:3"
                    }
                  ],
                  "name": "swapExactSYSForTokensSupportingFeeOnTransferTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2222,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "18584:8:3"
                  },
                  "parameters": {
                    "id": 2221,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2213,
                        "mutability": "mutable",
                        "name": "amountOutMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2308,
                        "src": "18453:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2212,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18453:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2216,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2308,
                        "src": "18483:23:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2214,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "18483:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2215,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "18483:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2218,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2308,
                        "src": "18516:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2217,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18516:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2220,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2308,
                        "src": "18536:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2219,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18536:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "18443:115:3"
                  },
                  "returnParameters": {
                    "id": 2226,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18610:0:3"
                  },
                  "scope": 2502,
                  "src": "18384:874:3",
                  "stateMutability": "payable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2975
                  ],
                  "body": {
                    "id": 2400,
                    "nodeType": "Block",
                    "src": "19508:618:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2334,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2327,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2315,
                                  "src": "19526:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 2332,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2331,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2328,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2315,
                                      "src": "19531:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 2329,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "19531:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 2330,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "19545:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "19531:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "19526:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2333,
                                "name": "WSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 484,
                                "src": "19551:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "19526:29:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50656761737973526f757465723a20494e56414c49445f50415448",
                              "id": 2335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19557:29:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_90cae87a9eaef4a96ab0b0f8a6013421c43b999ce2d26edbc57b60aa7b8a2487",
                                "typeString": "literal_string \"PegasysRouter: INVALID_PATH\""
                              },
                              "value": "PegasysRouter: INVALID_PATH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_90cae87a9eaef4a96ab0b0f8a6013421c43b999ce2d26edbc57b60aa7b8a2487",
                                "typeString": "literal_string \"PegasysRouter: INVALID_PATH\""
                              }
                            ],
                            "id": 2326,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "19518:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19518:69:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2337,
                        "nodeType": "ExpressionStatement",
                        "src": "19518:69:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2341,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2315,
                                "src": "19642:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 2343,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2342,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "19647:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "19642:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2344,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "19663:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2345,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "19663:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2348,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 481,
                                  "src": "19710:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2349,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2315,
                                    "src": "19719:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 2351,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 2350,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "19724:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "19719:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2352,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2315,
                                    "src": "19728:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 2354,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 2353,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "19733:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "19728:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2346,
                                  "name": "PegasysLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3476,
                                  "src": "19687:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                    "typeString": "type(library PegasysLibrary)"
                                  }
                                },
                                "id": 2347,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "pairFor",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3100,
                                "src": "19687:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address,address,address) pure returns (address)"
                                }
                              },
                              "id": 2355,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19687:49:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2356,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2310,
                              "src": "19750:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2338,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 464,
                              "src": "19597:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$464_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 2340,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 438,
                            "src": "19597:31:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 2357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19597:171:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2358,
                        "nodeType": "ExpressionStatement",
                        "src": "19597:171:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2360,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2315,
                              "src": "19813:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2363,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "19827:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                    "typeString": "contract PegasysRouter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                    "typeString": "contract PegasysRouter"
                                  }
                                ],
                                "id": 2362,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "19819:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2361,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "19819:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2364,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19819:13:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 2359,
                            "name": "_swapSupportingFeeOnTransferTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2132,
                            "src": "19778:34:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                              "typeString": "function (address[] memory,address)"
                            }
                          },
                          "id": 2365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19778:55:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2366,
                        "nodeType": "ExpressionStatement",
                        "src": "19778:55:3"
                      },
                      {
                        "assignments": [
                          2368
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2368,
                            "mutability": "mutable",
                            "name": "amountOut",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2400,
                            "src": "19843:17:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2367,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19843:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2378,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2375,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "19894:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                    "typeString": "contract PegasysRouter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_PegasysRouter_$2502",
                                    "typeString": "contract PegasysRouter"
                                  }
                                ],
                                "id": 2374,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "19886:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2373,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "19886:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2376,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19886:13:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2370,
                                  "name": "WSYS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 484,
                                  "src": "19870:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2369,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2586,
                                "src": "19863:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$2586_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 2371,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19863:12:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2586",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2372,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2547,
                            "src": "19863:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 2377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19863:37:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19843:57:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2382,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2380,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2368,
                                "src": "19931:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2381,
                                "name": "amountOutMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2312,
                                "src": "19944:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "19931:25:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "50656761737973526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                              "id": 2383,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19970:43:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b4ccbf9828c5d473c1e4797b0a19d271da6550c5f3e5563dc19cf9a9a73611b1",
                                "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                              },
                              "value": "PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b4ccbf9828c5d473c1e4797b0a19d271da6550c5f3e5563dc19cf9a9a73611b1",
                                "typeString": "literal_string \"PegasysRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                              }
                            ],
                            "id": 2379,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "19910:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2384,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19910:113:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2385,
                        "nodeType": "ExpressionStatement",
                        "src": "19910:113:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2390,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2368,
                              "src": "20054:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2387,
                                  "name": "WSYS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 484,
                                  "src": "20039:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2386,
                                "name": "IWSYS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3003,
                                "src": "20033:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWSYS_$3003_$",
                                  "typeString": "type(contract IWSYS)"
                                }
                              },
                              "id": 2388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20033:11:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWSYS_$3003",
                                "typeString": "contract IWSYS"
                              }
                            },
                            "id": 2389,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "withdraw",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3002,
                            "src": "20033:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) external"
                            }
                          },
                          "id": 2391,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20033:31:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2392,
                        "nodeType": "ExpressionStatement",
                        "src": "20033:31:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2396,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2317,
                              "src": "20105:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2397,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2368,
                              "src": "20109:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2393,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 464,
                              "src": "20074:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$464_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 2395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferSYS",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 463,
                            "src": "20074:30:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 2398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20074:45:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2399,
                        "nodeType": "ExpressionStatement",
                        "src": "20074:45:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "ee8794c4",
                  "id": 2401,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2323,
                          "name": "deadline",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2319,
                          "src": "19498:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 2324,
                      "modifierName": {
                        "argumentTypes": null,
                        "id": 2322,
                        "name": "ensure",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 498,
                        "src": "19491:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$_t_uint256_$",
                          "typeString": "modifier (uint256)"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "19491:16:3"
                    }
                  ],
                  "name": "swapExactTokensForSYSSupportingFeeOnTransferTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2321,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "19482:8:3"
                  },
                  "parameters": {
                    "id": 2320,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2310,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2401,
                        "src": "19333:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2309,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19333:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2312,
                        "mutability": "mutable",
                        "name": "amountOutMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2401,
                        "src": "19359:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2311,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19359:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2315,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2401,
                        "src": "19389:23:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2313,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "19389:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2314,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "19389:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2317,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2401,
                        "src": "19422:10:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2316,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19422:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2319,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2401,
                        "src": "19442:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2318,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19442:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "19323:141:3"
                  },
                  "returnParameters": {
                    "id": 2325,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19508:0:3"
                  },
                  "scope": 2502,
                  "src": "19264:862:3",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2849
                  ],
                  "body": {
                    "id": 2420,
                    "nodeType": "Block",
                    "src": "20320:73:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2415,
                              "name": "amountA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2403,
                              "src": "20358:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2416,
                              "name": "reserveA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2405,
                              "src": "20367:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2417,
                              "name": "reserveB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2407,
                              "src": "20377:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2413,
                              "name": "PegasysLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3476,
                              "src": "20337:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                "typeString": "type(library PegasysLibrary)"
                              }
                            },
                            "id": 2414,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "quote",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3189,
                            "src": "20337:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20337:49:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 2412,
                        "id": 2419,
                        "nodeType": "Return",
                        "src": "20330:56:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "ad615dec",
                  "id": 2421,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "quote",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2409,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "20285:8:3"
                  },
                  "parameters": {
                    "id": 2408,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2403,
                        "mutability": "mutable",
                        "name": "amountA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2421,
                        "src": "20191:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2402,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20191:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2405,
                        "mutability": "mutable",
                        "name": "reserveA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2421,
                        "src": "20216:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2404,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20216:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2407,
                        "mutability": "mutable",
                        "name": "reserveB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2421,
                        "src": "20242:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2406,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20242:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20181:83:3"
                  },
                  "returnParameters": {
                    "id": 2412,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2411,
                        "mutability": "mutable",
                        "name": "amountB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2421,
                        "src": "20303:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2410,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20303:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20302:17:3"
                  },
                  "scope": 2502,
                  "src": "20167:226:3",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2860
                  ],
                  "body": {
                    "id": 2440,
                    "nodeType": "Block",
                    "src": "20565:84:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2435,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2423,
                              "src": "20610:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2436,
                              "name": "reserveIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2425,
                              "src": "20620:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2437,
                              "name": "reserveOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2427,
                              "src": "20631:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2433,
                              "name": "PegasysLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3476,
                              "src": "20582:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                "typeString": "type(library PegasysLibrary)"
                              }
                            },
                            "id": 2434,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountOut",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3249,
                            "src": "20582:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20582:60:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 2432,
                        "id": 2439,
                        "nodeType": "Return",
                        "src": "20575:67:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "054d50d4",
                  "id": 2441,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountOut",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2429,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "20528:8:3"
                  },
                  "parameters": {
                    "id": 2428,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2423,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2441,
                        "src": "20430:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2422,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20430:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2425,
                        "mutability": "mutable",
                        "name": "reserveIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2441,
                        "src": "20456:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2424,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20456:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2427,
                        "mutability": "mutable",
                        "name": "reserveOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2441,
                        "src": "20483:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2426,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20483:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20420:87:3"
                  },
                  "returnParameters": {
                    "id": 2432,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2431,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2441,
                        "src": "20546:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2430,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20546:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20545:19:3"
                  },
                  "scope": 2502,
                  "src": "20399:250:3",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2871
                  ],
                  "body": {
                    "id": 2460,
                    "nodeType": "Block",
                    "src": "20820:84:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2455,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2443,
                              "src": "20864:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2456,
                              "name": "reserveIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2445,
                              "src": "20875:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2457,
                              "name": "reserveOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2447,
                              "src": "20886:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2453,
                              "name": "PegasysLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3476,
                              "src": "20837:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                "typeString": "type(library PegasysLibrary)"
                              }
                            },
                            "id": 2454,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountIn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3309,
                            "src": "20837:26:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 2458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20837:60:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 2452,
                        "id": 2459,
                        "nodeType": "Return",
                        "src": "20830:67:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "85f8c259",
                  "id": 2461,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountIn",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2449,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "20784:8:3"
                  },
                  "parameters": {
                    "id": 2448,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2443,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2461,
                        "src": "20685:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2442,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20685:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2445,
                        "mutability": "mutable",
                        "name": "reserveIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2461,
                        "src": "20712:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2444,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20712:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2447,
                        "mutability": "mutable",
                        "name": "reserveOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2461,
                        "src": "20739:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2446,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20739:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20675:88:3"
                  },
                  "returnParameters": {
                    "id": 2452,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2451,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2461,
                        "src": "20802:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2450,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20802:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20801:18:3"
                  },
                  "scope": 2502,
                  "src": "20655:249:3",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2882
                  ],
                  "body": {
                    "id": 2480,
                    "nodeType": "Block",
                    "src": "21082:77:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2475,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 481,
                              "src": "21128:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2476,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2463,
                              "src": "21137:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2477,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2466,
                              "src": "21147:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2473,
                              "name": "PegasysLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3476,
                              "src": "21099:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                "typeString": "type(library PegasysLibrary)"
                              }
                            },
                            "id": 2474,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsOut",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3390,
                            "src": "21099:28:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 2478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21099:53:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 2472,
                        "id": 2479,
                        "nodeType": "Return",
                        "src": "21092:60:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d06ca61f",
                  "id": 2481,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountsOut",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2468,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "21026:8:3"
                  },
                  "parameters": {
                    "id": 2467,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2463,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2481,
                        "src": "20933:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2462,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20933:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2466,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2481,
                        "src": "20951:21:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2464,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "20951:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2465,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "20951:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "20932:41:3"
                  },
                  "returnParameters": {
                    "id": 2472,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2471,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2481,
                        "src": "21052:24:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2469,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "21052:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2470,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "21052:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21051:26:3"
                  },
                  "scope": 2502,
                  "src": "20910:249:3",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2893
                  ],
                  "body": {
                    "id": 2500,
                    "nodeType": "Block",
                    "src": "21337:77:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2495,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 481,
                              "src": "21382:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2496,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2483,
                              "src": "21391:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2497,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2486,
                              "src": "21402:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2493,
                              "name": "PegasysLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3476,
                              "src": "21354:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_PegasysLibrary_$3476_$",
                                "typeString": "type(library PegasysLibrary)"
                              }
                            },
                            "id": 2494,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsIn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3475,
                            "src": "21354:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 2498,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21354:53:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 2492,
                        "id": 2499,
                        "nodeType": "Return",
                        "src": "21347:60:3"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "1f00ca74",
                  "id": 2501,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountsIn",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2488,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "21281:8:3"
                  },
                  "parameters": {
                    "id": 2487,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2483,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2501,
                        "src": "21187:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2482,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21187:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2486,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2501,
                        "src": "21206:21:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2484,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "21206:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2485,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "21206:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21186:42:3"
                  },
                  "returnParameters": {
                    "id": 2492,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2491,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2501,
                        "src": "21307:24:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2489,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "21307:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2490,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "21307:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "21306:26:3"
                  },
                  "scope": 2502,
                  "src": "21165:249:3",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 2503,
              "src": "323:21093:3"
            }
          ],
          "src": "0:21417:3"
        },
        "id": 3
      },
      "contracts/pegasys-periphery/interfaces/IERC20.sol": {
        "ast": {
          "absolutePath": "contracts/pegasys-periphery/interfaces/IERC20.sol",
          "exportedSymbols": {
            "IERC20": [
              2586
            ]
          },
          "id": 2587,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2504,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:4"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 2586,
              "linearizedBaseContracts": [
                2586
              ],
              "name": "IERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 2512,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2511,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2506,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2512,
                        "src": "105:21:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2505,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "105:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2508,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2512,
                        "src": "136:23:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2507,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "136:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2510,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2512,
                        "src": "169:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2509,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "169:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "95:93:4"
                  },
                  "src": "81:108:4"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 2520,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2519,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2514,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2520,
                        "src": "209:20:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2513,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "209:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2516,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2520,
                        "src": "231:18:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2515,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "231:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2518,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2520,
                        "src": "251:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2517,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "251:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "208:57:4"
                  },
                  "src": "194:72:4"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "06fdde03",
                  "id": 2525,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2521,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "285:2:4"
                  },
                  "returnParameters": {
                    "id": 2524,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2523,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2525,
                        "src": "311:13:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2522,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "311:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "310:15:4"
                  },
                  "scope": 2586,
                  "src": "272:54:4",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "95d89b41",
                  "id": 2530,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2526,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "347:2:4"
                  },
                  "returnParameters": {
                    "id": 2529,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2528,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2530,
                        "src": "373:13:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2527,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "373:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "372:15:4"
                  },
                  "scope": 2586,
                  "src": "332:56:4",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "313ce567",
                  "id": 2535,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2531,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "411:2:4"
                  },
                  "returnParameters": {
                    "id": 2534,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2533,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2535,
                        "src": "437:5:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 2532,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "437:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "436:7:4"
                  },
                  "scope": 2586,
                  "src": "394:50:4",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "18160ddd",
                  "id": 2540,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2536,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "470:2:4"
                  },
                  "returnParameters": {
                    "id": 2539,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2538,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2540,
                        "src": "496:7:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2537,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "496:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "495:9:4"
                  },
                  "scope": 2586,
                  "src": "450:55:4",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "70a08231",
                  "id": 2547,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2543,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2542,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2547,
                        "src": "530:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2541,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "530:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "529:15:4"
                  },
                  "returnParameters": {
                    "id": 2546,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2545,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2547,
                        "src": "568:7:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2544,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "568:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "567:9:4"
                  },
                  "scope": 2586,
                  "src": "511:66:4",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "dd62ed3e",
                  "id": 2556,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2552,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2549,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2556,
                        "src": "602:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2548,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "602:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2551,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2556,
                        "src": "617:15:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2550,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "617:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "601:32:4"
                  },
                  "returnParameters": {
                    "id": 2555,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2554,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2556,
                        "src": "681:7:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2553,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "681:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "680:9:4"
                  },
                  "scope": 2586,
                  "src": "583:107:4",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "095ea7b3",
                  "id": 2565,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2561,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2558,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2565,
                        "src": "713:15:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2557,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "713:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2560,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2565,
                        "src": "730:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2559,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "730:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "712:32:4"
                  },
                  "returnParameters": {
                    "id": 2564,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2563,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2565,
                        "src": "763:4:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2562,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "763:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "762:6:4"
                  },
                  "scope": 2586,
                  "src": "696:73:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "a9059cbb",
                  "id": 2574,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2570,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2567,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2574,
                        "src": "793:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2566,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "793:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2569,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2574,
                        "src": "805:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2568,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "805:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "792:27:4"
                  },
                  "returnParameters": {
                    "id": 2573,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2572,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2574,
                        "src": "838:4:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2571,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "838:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "837:6:4"
                  },
                  "scope": 2586,
                  "src": "775:69:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "23b872dd",
                  "id": 2585,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2581,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2576,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2585,
                        "src": "881:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2575,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "881:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2578,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2585,
                        "src": "903:10:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2577,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "903:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2580,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2585,
                        "src": "923:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2579,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "923:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "871:71:4"
                  },
                  "returnParameters": {
                    "id": 2584,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2583,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2585,
                        "src": "961:4:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2582,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "961:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "960:6:4"
                  },
                  "scope": 2586,
                  "src": "850:117:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2587,
              "src": "58:911:4"
            }
          ],
          "src": "32:938:4"
        },
        "id": 4
      },
      "contracts/pegasys-periphery/interfaces/IPegasysRouter.sol": {
        "ast": {
          "absolutePath": "contracts/pegasys-periphery/interfaces/IPegasysRouter.sol",
          "exportedSymbols": {
            "IPegasysRouter": [
              2976
            ]
          },
          "id": 2977,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2588,
              "literals": [
                "solidity",
                ">=",
                "0.6",
                ".2"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:5"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 2976,
              "linearizedBaseContracts": [
                2976
              ],
              "name": "IPegasysRouter",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "c45a0155",
                  "id": 2593,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "factory",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2589,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "105:2:5"
                  },
                  "returnParameters": {
                    "id": 2592,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2591,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2593,
                        "src": "131:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2590,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "131:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "130:9:5"
                  },
                  "scope": 2976,
                  "src": "89:51:5",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "08b0b435",
                  "id": 2598,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "WSYS",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2594,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "159:2:5"
                  },
                  "returnParameters": {
                    "id": 2597,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2596,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2598,
                        "src": "185:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2595,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "185:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "184:9:5"
                  },
                  "scope": 2976,
                  "src": "146:48:5",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "e8e33700",
                  "id": 2623,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addLiquidity",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2615,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2600,
                        "mutability": "mutable",
                        "name": "tokenA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2623,
                        "src": "231:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2599,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "231:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2602,
                        "mutability": "mutable",
                        "name": "tokenB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2623,
                        "src": "255:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2601,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "255:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2604,
                        "mutability": "mutable",
                        "name": "amountADesired",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2623,
                        "src": "279:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2603,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "279:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2606,
                        "mutability": "mutable",
                        "name": "amountBDesired",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2623,
                        "src": "311:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2605,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "311:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2608,
                        "mutability": "mutable",
                        "name": "amountAMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2623,
                        "src": "343:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2607,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "343:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2610,
                        "mutability": "mutable",
                        "name": "amountBMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2623,
                        "src": "371:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2609,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "371:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2612,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2623,
                        "src": "399:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2611,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "399:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2614,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2623,
                        "src": "419:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2613,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "419:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "221:220:5"
                  },
                  "returnParameters": {
                    "id": 2622,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2617,
                        "mutability": "mutable",
                        "name": "amountA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2623,
                        "src": "489:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2616,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "489:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2619,
                        "mutability": "mutable",
                        "name": "amountB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2623,
                        "src": "518:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2618,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "518:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2621,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2623,
                        "src": "547:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2620,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "547:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "475:99:5"
                  },
                  "scope": 2976,
                  "src": "200:375:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "3c7356d5",
                  "id": 2644,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addLiquiditySYS",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2636,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2625,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2644,
                        "src": "615:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2624,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "615:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2627,
                        "mutability": "mutable",
                        "name": "amountTokenDesired",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2644,
                        "src": "638:26:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2626,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "638:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2629,
                        "mutability": "mutable",
                        "name": "amountTokenMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2644,
                        "src": "674:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2628,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "674:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2631,
                        "mutability": "mutable",
                        "name": "amountSYSMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2644,
                        "src": "706:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2630,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "706:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2633,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2644,
                        "src": "736:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2632,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "736:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2635,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2644,
                        "src": "756:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2634,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "756:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "605:173:5"
                  },
                  "returnParameters": {
                    "id": 2643,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2638,
                        "mutability": "mutable",
                        "name": "amountToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2644,
                        "src": "842:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2637,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "842:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2640,
                        "mutability": "mutable",
                        "name": "amountSYS",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2644,
                        "src": "875:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2639,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "875:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2642,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2644,
                        "src": "906:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2641,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "906:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "828:105:5"
                  },
                  "scope": 2976,
                  "src": "581:353:5",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "baa2abde",
                  "id": 2665,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "removeLiquidity",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2659,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2646,
                        "mutability": "mutable",
                        "name": "tokenA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2665,
                        "src": "974:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2645,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "974:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2648,
                        "mutability": "mutable",
                        "name": "tokenB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2665,
                        "src": "998:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2647,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "998:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2650,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2665,
                        "src": "1022:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2649,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1022:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2652,
                        "mutability": "mutable",
                        "name": "amountAMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2665,
                        "src": "1049:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2651,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1049:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2654,
                        "mutability": "mutable",
                        "name": "amountBMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2665,
                        "src": "1077:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2653,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1077:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2656,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2665,
                        "src": "1105:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2655,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1105:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2658,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2665,
                        "src": "1125:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2657,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1125:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "964:183:5"
                  },
                  "returnParameters": {
                    "id": 2664,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2661,
                        "mutability": "mutable",
                        "name": "amountA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2665,
                        "src": "1166:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2660,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1166:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2663,
                        "mutability": "mutable",
                        "name": "amountB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2665,
                        "src": "1183:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2662,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1183:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1165:34:5"
                  },
                  "scope": 2976,
                  "src": "940:260:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "016c8414",
                  "id": 2684,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "removeLiquiditySYS",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2678,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2667,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2684,
                        "src": "1243:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2666,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1243:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2669,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2684,
                        "src": "1266:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2668,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1266:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2671,
                        "mutability": "mutable",
                        "name": "amountTokenMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2684,
                        "src": "1293:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2670,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1293:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2673,
                        "mutability": "mutable",
                        "name": "amountSYSMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2684,
                        "src": "1325:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2672,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1325:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2675,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2684,
                        "src": "1355:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2674,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1355:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2677,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2684,
                        "src": "1375:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2676,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1375:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1233:164:5"
                  },
                  "returnParameters": {
                    "id": 2683,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2680,
                        "mutability": "mutable",
                        "name": "amountToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2684,
                        "src": "1416:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2679,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1416:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2682,
                        "mutability": "mutable",
                        "name": "amountSYS",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2684,
                        "src": "1437:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2681,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1437:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1415:40:5"
                  },
                  "scope": 2976,
                  "src": "1206:250:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "2195995c",
                  "id": 2713,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "removeLiquidityWithPermit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2707,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2686,
                        "mutability": "mutable",
                        "name": "tokenA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2713,
                        "src": "1506:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2685,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1506:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2688,
                        "mutability": "mutable",
                        "name": "tokenB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2713,
                        "src": "1530:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2687,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1530:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2690,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2713,
                        "src": "1554:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2689,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1554:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2692,
                        "mutability": "mutable",
                        "name": "amountAMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2713,
                        "src": "1581:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2691,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1581:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2694,
                        "mutability": "mutable",
                        "name": "amountBMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2713,
                        "src": "1609:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2693,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1609:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2696,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2713,
                        "src": "1637:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2695,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1637:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2698,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2713,
                        "src": "1657:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2697,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1657:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2700,
                        "mutability": "mutable",
                        "name": "approveMax",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2713,
                        "src": "1683:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2699,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1683:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2702,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2713,
                        "src": "1708:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 2701,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1708:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2704,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2713,
                        "src": "1725:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2703,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1725:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2706,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2713,
                        "src": "1744:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2705,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1744:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1496:263:5"
                  },
                  "returnParameters": {
                    "id": 2712,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2709,
                        "mutability": "mutable",
                        "name": "amountA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2713,
                        "src": "1778:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2708,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1778:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2711,
                        "mutability": "mutable",
                        "name": "amountB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2713,
                        "src": "1795:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2710,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1795:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1777:34:5"
                  },
                  "scope": 2976,
                  "src": "1462:350:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "dfd9111b",
                  "id": 2740,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "removeLiquiditySYSWithPermit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2734,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2715,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2740,
                        "src": "1865:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2714,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1865:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2717,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2740,
                        "src": "1888:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2716,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1888:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2719,
                        "mutability": "mutable",
                        "name": "amountTokenMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2740,
                        "src": "1915:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2718,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1915:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2721,
                        "mutability": "mutable",
                        "name": "amountSYSMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2740,
                        "src": "1947:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2720,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1947:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2723,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2740,
                        "src": "1977:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2722,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1977:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2725,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2740,
                        "src": "1997:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2724,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1997:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2727,
                        "mutability": "mutable",
                        "name": "approveMax",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2740,
                        "src": "2023:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2726,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2023:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2729,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2740,
                        "src": "2048:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 2728,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "2048:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2731,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2740,
                        "src": "2065:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2730,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2065:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2733,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2740,
                        "src": "2084:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2732,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2084:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1855:244:5"
                  },
                  "returnParameters": {
                    "id": 2739,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2736,
                        "mutability": "mutable",
                        "name": "amountToken",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2740,
                        "src": "2118:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2735,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2118:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2738,
                        "mutability": "mutable",
                        "name": "amountSYS",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2740,
                        "src": "2139:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2737,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2139:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2117:40:5"
                  },
                  "scope": 2976,
                  "src": "1818:340:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "38ed1739",
                  "id": 2757,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapExactTokensForTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2752,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2742,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2757,
                        "src": "2207:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2741,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2207:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2744,
                        "mutability": "mutable",
                        "name": "amountOutMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2757,
                        "src": "2233:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2743,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2233:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2747,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2757,
                        "src": "2263:23:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2745,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2263:7:5",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2746,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2263:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2749,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2757,
                        "src": "2296:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2748,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2296:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2751,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2757,
                        "src": "2316:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2750,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2316:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2197:141:5"
                  },
                  "returnParameters": {
                    "id": 2756,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2755,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2757,
                        "src": "2357:24:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2753,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2357:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2754,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2357:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2356:26:5"
                  },
                  "scope": 2976,
                  "src": "2164:219:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "8803dbee",
                  "id": 2774,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapTokensForExactTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2769,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2759,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2774,
                        "src": "2432:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2758,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2432:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2761,
                        "mutability": "mutable",
                        "name": "amountInMax",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2774,
                        "src": "2459:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2760,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2459:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2764,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2774,
                        "src": "2488:23:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2762,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2488:7:5",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2763,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2488:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2766,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2774,
                        "src": "2521:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2765,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2521:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2768,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2774,
                        "src": "2541:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2767,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2541:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2422:141:5"
                  },
                  "returnParameters": {
                    "id": 2773,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2772,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2774,
                        "src": "2582:24:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2770,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2582:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2771,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2582:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2581:26:5"
                  },
                  "scope": 2976,
                  "src": "2389:219:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "1fef2389",
                  "id": 2789,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapExactSYSForTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2784,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2776,
                        "mutability": "mutable",
                        "name": "amountOutMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2789,
                        "src": "2654:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2775,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2654:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2779,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2789,
                        "src": "2684:23:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2777,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2684:7:5",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2778,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2684:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2781,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2789,
                        "src": "2717:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2780,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2717:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2783,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2789,
                        "src": "2737:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2782,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2737:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2644:115:5"
                  },
                  "returnParameters": {
                    "id": 2788,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2787,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2789,
                        "src": "2786:24:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2785,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2786:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2786,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2786:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2785:26:5"
                  },
                  "scope": 2976,
                  "src": "2614:198:5",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "181950fd",
                  "id": 2806,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapTokensForExactSYS",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2801,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2791,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2806,
                        "src": "2858:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2790,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2858:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2793,
                        "mutability": "mutable",
                        "name": "amountInMax",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2806,
                        "src": "2885:19:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2792,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2885:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2796,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2806,
                        "src": "2914:23:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2794,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2914:7:5",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2795,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2914:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2798,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2806,
                        "src": "2947:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2797,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2947:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2800,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2806,
                        "src": "2967:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2799,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2967:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2848:141:5"
                  },
                  "returnParameters": {
                    "id": 2805,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2804,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2806,
                        "src": "3008:24:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2802,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3008:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2803,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3008:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3007:26:5"
                  },
                  "scope": 2976,
                  "src": "2818:216:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "c78c12cf",
                  "id": 2823,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapExactTokensForSYS",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2818,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2808,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2823,
                        "src": "3080:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2807,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3080:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2810,
                        "mutability": "mutable",
                        "name": "amountOutMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2823,
                        "src": "3106:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2809,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3106:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2813,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2823,
                        "src": "3136:23:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2811,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3136:7:5",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2812,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3136:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2815,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2823,
                        "src": "3169:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2814,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3169:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2817,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2823,
                        "src": "3189:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2816,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3189:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3070:141:5"
                  },
                  "returnParameters": {
                    "id": 2822,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2821,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2823,
                        "src": "3230:24:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2819,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3230:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2820,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3230:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3229:26:5"
                  },
                  "scope": 2976,
                  "src": "3040:216:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "08e4e89e",
                  "id": 2838,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapSYSForExactTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2833,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2825,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2838,
                        "src": "3302:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2824,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3302:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2828,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2838,
                        "src": "3329:23:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2826,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3329:7:5",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2827,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3329:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2830,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2838,
                        "src": "3362:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2829,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3362:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2832,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2838,
                        "src": "3382:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2831,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3382:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3292:112:5"
                  },
                  "returnParameters": {
                    "id": 2837,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2836,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2838,
                        "src": "3431:24:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2834,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3431:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2835,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3431:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3430:26:5"
                  },
                  "scope": 2976,
                  "src": "3262:195:5",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "ad615dec",
                  "id": 2849,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "quote",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2845,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2840,
                        "mutability": "mutable",
                        "name": "amountA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2849,
                        "src": "3487:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2839,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3487:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2842,
                        "mutability": "mutable",
                        "name": "reserveA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2849,
                        "src": "3512:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2841,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3512:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2844,
                        "mutability": "mutable",
                        "name": "reserveB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2849,
                        "src": "3538:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2843,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3538:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3477:83:5"
                  },
                  "returnParameters": {
                    "id": 2848,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2847,
                        "mutability": "mutable",
                        "name": "amountB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2849,
                        "src": "3584:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2846,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3584:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3583:17:5"
                  },
                  "scope": 2976,
                  "src": "3463:138:5",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "054d50d4",
                  "id": 2860,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountOut",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2856,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2851,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2860,
                        "src": "3638:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2850,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3638:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2853,
                        "mutability": "mutable",
                        "name": "reserveIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2860,
                        "src": "3664:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2852,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3664:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2855,
                        "mutability": "mutable",
                        "name": "reserveOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2860,
                        "src": "3691:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2854,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3691:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3628:87:5"
                  },
                  "returnParameters": {
                    "id": 2859,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2858,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2860,
                        "src": "3739:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2857,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3739:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3738:19:5"
                  },
                  "scope": 2976,
                  "src": "3607:151:5",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "85f8c259",
                  "id": 2871,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountIn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2867,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2862,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2871,
                        "src": "3794:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2861,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3794:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2864,
                        "mutability": "mutable",
                        "name": "reserveIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2871,
                        "src": "3821:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2863,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3821:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2866,
                        "mutability": "mutable",
                        "name": "reserveOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2871,
                        "src": "3848:18:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2865,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3848:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3784:88:5"
                  },
                  "returnParameters": {
                    "id": 2870,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2869,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2871,
                        "src": "3896:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2868,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3896:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3895:18:5"
                  },
                  "scope": 2976,
                  "src": "3764:150:5",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d06ca61f",
                  "id": 2882,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountsOut",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2877,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2873,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2882,
                        "src": "3943:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2872,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3943:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2876,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2882,
                        "src": "3961:23:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2874,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3961:7:5",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2875,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3961:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3942:43:5"
                  },
                  "returnParameters": {
                    "id": 2881,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2880,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2882,
                        "src": "4033:24:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2878,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4033:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2879,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4033:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4032:26:5"
                  },
                  "scope": 2976,
                  "src": "3920:139:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "1f00ca74",
                  "id": 2893,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountsIn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2888,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2884,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2893,
                        "src": "4087:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2883,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4087:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2887,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2893,
                        "src": "4106:23:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2885,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4106:7:5",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2886,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4106:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4086:44:5"
                  },
                  "returnParameters": {
                    "id": 2892,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2891,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2893,
                        "src": "4178:24:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2889,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4178:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2890,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4178:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4177:26:5"
                  },
                  "scope": 2976,
                  "src": "4065:139:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "aab4c40b",
                  "id": 2910,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "removeLiquiditySYSSupportingFeeOnTransferTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2906,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2895,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2910,
                        "src": "4276:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2894,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4276:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2897,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2910,
                        "src": "4299:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2896,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4299:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2899,
                        "mutability": "mutable",
                        "name": "amountTokenMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2910,
                        "src": "4326:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2898,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4326:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2901,
                        "mutability": "mutable",
                        "name": "amountSYSMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2910,
                        "src": "4358:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2900,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4358:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2903,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2910,
                        "src": "4388:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2902,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4388:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2905,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2910,
                        "src": "4408:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2904,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4408:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4266:164:5"
                  },
                  "returnParameters": {
                    "id": 2909,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2908,
                        "mutability": "mutable",
                        "name": "amountSYS",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2910,
                        "src": "4449:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2907,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4449:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4448:19:5"
                  },
                  "scope": 2976,
                  "src": "4210:258:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "f1a730bd",
                  "id": 2935,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "removeLiquiditySYSWithPermitSupportingFeeOnTransferTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2931,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2912,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2935,
                        "src": "4550:13:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2911,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4550:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2914,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2935,
                        "src": "4573:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2913,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4573:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2916,
                        "mutability": "mutable",
                        "name": "amountTokenMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2935,
                        "src": "4600:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2915,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4600:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2918,
                        "mutability": "mutable",
                        "name": "amountSYSMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2935,
                        "src": "4632:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2917,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4632:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2920,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2935,
                        "src": "4662:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2919,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4662:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2922,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2935,
                        "src": "4682:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2921,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4682:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2924,
                        "mutability": "mutable",
                        "name": "approveMax",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2935,
                        "src": "4708:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2923,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4708:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2926,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2935,
                        "src": "4733:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 2925,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "4733:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2928,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2935,
                        "src": "4750:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2927,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4750:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2930,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2935,
                        "src": "4769:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2929,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4769:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4540:244:5"
                  },
                  "returnParameters": {
                    "id": 2934,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2933,
                        "mutability": "mutable",
                        "name": "amountSYS",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2935,
                        "src": "4803:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2932,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4803:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4802:19:5"
                  },
                  "scope": 2976,
                  "src": "4474:348:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "5c11d795",
                  "id": 2949,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2947,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2937,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2949,
                        "src": "4900:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2936,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4900:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2939,
                        "mutability": "mutable",
                        "name": "amountOutMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2949,
                        "src": "4926:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2938,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4926:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2942,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2949,
                        "src": "4956:23:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2940,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4956:7:5",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2941,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4956:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2944,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2949,
                        "src": "4989:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2943,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4989:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2946,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2949,
                        "src": "5009:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2945,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5009:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4890:141:5"
                  },
                  "returnParameters": {
                    "id": 2948,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5040:0:5"
                  },
                  "scope": 2976,
                  "src": "4828:213:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "00121258",
                  "id": 2961,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapExactSYSForTokensSupportingFeeOnTransferTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2959,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2951,
                        "mutability": "mutable",
                        "name": "amountOutMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2961,
                        "src": "5116:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2950,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5116:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2954,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2961,
                        "src": "5146:23:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2952,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5146:7:5",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2953,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "5146:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2956,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2961,
                        "src": "5179:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2955,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5179:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2958,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2961,
                        "src": "5199:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2957,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5199:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5106:115:5"
                  },
                  "returnParameters": {
                    "id": 2960,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5238:0:5"
                  },
                  "scope": 2976,
                  "src": "5047:192:5",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "ee8794c4",
                  "id": 2975,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapExactTokensForSYSSupportingFeeOnTransferTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2973,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2963,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2975,
                        "src": "5314:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2962,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5314:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2965,
                        "mutability": "mutable",
                        "name": "amountOutMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2975,
                        "src": "5340:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2964,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5340:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2968,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2975,
                        "src": "5370:23:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2966,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5370:7:5",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2967,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "5370:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2970,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2975,
                        "src": "5403:10:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2969,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5403:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2972,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2975,
                        "src": "5423:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2971,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5423:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5304:141:5"
                  },
                  "returnParameters": {
                    "id": 2974,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5454:0:5"
                  },
                  "scope": 2976,
                  "src": "5245:210:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2977,
              "src": "58:5399:5"
            }
          ],
          "src": "32:5426:5"
        },
        "id": 5
      },
      "contracts/pegasys-periphery/interfaces/IWSYS.sol": {
        "ast": {
          "absolutePath": "contracts/pegasys-periphery/interfaces/IWSYS.sol",
          "exportedSymbols": {
            "IWSYS": [
              3003
            ]
          },
          "id": 3004,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2978,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:6"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 3003,
              "linearizedBaseContracts": [
                3003
              ],
              "name": "IWSYS",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d0e30db0",
                  "id": 2981,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2979,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "96:2:6"
                  },
                  "returnParameters": {
                    "id": 2980,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "115:0:6"
                  },
                  "scope": 3003,
                  "src": "80:36:6",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "a9059cbb",
                  "id": 2990,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2986,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2983,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2990,
                        "src": "140:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2982,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "140:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2985,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2990,
                        "src": "152:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2984,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "152:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "139:27:6"
                  },
                  "returnParameters": {
                    "id": 2989,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2988,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2990,
                        "src": "185:4:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2987,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "185:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "184:6:6"
                  },
                  "scope": 3003,
                  "src": "122:69:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "70a08231",
                  "id": 2997,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 2993,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2992,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2997,
                        "src": "216:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2991,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "216:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "215:15:6"
                  },
                  "returnParameters": {
                    "id": 2996,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2995,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 2997,
                        "src": "254:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2994,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "254:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "253:9:6"
                  },
                  "scope": 3003,
                  "src": "197:66:6",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "2e1a7d4d",
                  "id": 3002,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3000,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2999,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3002,
                        "src": "287:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2998,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "287:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "286:9:6"
                  },
                  "returnParameters": {
                    "id": 3001,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "304:0:6"
                  },
                  "scope": 3003,
                  "src": "269:36:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3004,
              "src": "58:249:6"
            }
          ],
          "src": "32:276:6"
        },
        "id": 6
      },
      "contracts/pegasys-periphery/libraries/PegasysLibrary.sol": {
        "ast": {
          "absolutePath": "contracts/pegasys-periphery/libraries/PegasysLibrary.sol",
          "exportedSymbols": {
            "PegasysLibrary": [
              3476
            ]
          },
          "id": 3477,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3005,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:7"
            },
            {
              "absolutePath": "contracts/pegasys-core/interfaces/IPegasysFactory.sol",
              "file": "../../pegasys-core/interfaces/IPegasysFactory.sol",
              "id": 3006,
              "nodeType": "ImportDirective",
              "scope": 3477,
              "sourceUnit": 63,
              "src": "58:59:7",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pegasys-core/interfaces/IPegasysPair.sol",
              "file": "../../pegasys-core/interfaces/IPegasysPair.sol",
              "id": 3007,
              "nodeType": "ImportDirective",
              "scope": 3477,
              "sourceUnit": 305,
              "src": "118:56:7",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pegasys-periphery/libraries/SafeMath.sol",
              "file": "./SafeMath.sol",
              "id": 3008,
              "nodeType": "ImportDirective",
              "scope": 3477,
              "sourceUnit": 3575,
              "src": "176:24:7",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 3476,
              "linearizedBaseContracts": [
                3476
              ],
              "name": "PegasysLibrary",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 3011,
                  "libraryName": {
                    "contractScope": null,
                    "id": 3009,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3574,
                    "src": "237:8:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$3574",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "231:27:7",
                  "typeName": {
                    "id": 3010,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "250:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "body": {
                    "id": 3054,
                    "nodeType": "Block",
                    "src": "499:258:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3025,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3023,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3013,
                                "src": "517:6:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3024,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3015,
                                "src": "527:6:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "517:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506567617379734c6962726172793a204944454e544943414c5f414444524553534553",
                              "id": 3026,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "535:37:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_59ad90833f75ebc1baf92fb59c7629c0f330022e4c3b955249d8872b3fa1083a",
                                "typeString": "literal_string \"PegasysLibrary: IDENTICAL_ADDRESSES\""
                              },
                              "value": "PegasysLibrary: IDENTICAL_ADDRESSES"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_59ad90833f75ebc1baf92fb59c7629c0f330022e4c3b955249d8872b3fa1083a",
                                "typeString": "literal_string \"PegasysLibrary: IDENTICAL_ADDRESSES\""
                              }
                            ],
                            "id": 3022,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "509:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3027,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "509:64:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3028,
                        "nodeType": "ExpressionStatement",
                        "src": "509:64:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3042,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 3029,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3018,
                                "src": "584:6:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3030,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3020,
                                "src": "592:6:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "id": 3031,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "583:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                              "typeString": "tuple(address,address)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3034,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3032,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3013,
                                "src": "602:6:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3033,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3015,
                                "src": "611:6:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "602:15:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 3038,
                                  "name": "tokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3015,
                                  "src": "664:6:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3039,
                                  "name": "tokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3013,
                                  "src": "672:6:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "id": 3040,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "663:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                "typeString": "tuple(address,address)"
                              }
                            },
                            "id": 3041,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "602:77:7",
                            "trueExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 3035,
                                  "name": "tokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3013,
                                  "src": "633:6:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3036,
                                  "name": "tokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3015,
                                  "src": "641:6:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "id": 3037,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "632:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                "typeString": "tuple(address,address)"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                              "typeString": "tuple(address,address)"
                            }
                          },
                          "src": "583:96:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3043,
                        "nodeType": "ExpressionStatement",
                        "src": "583:96:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3050,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3045,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3018,
                                "src": "697:6:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 3048,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "715:1:7",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 3047,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "707:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3046,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "707:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3049,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "707:10:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "697:20:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506567617379734c6962726172793a205a45524f5f41444452455353",
                              "id": 3051,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "719:30:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9ee69ec94ff7f6018be7eaba1decd4ccc992dc21a9a8a310ab12d070194bdb6a",
                                "typeString": "literal_string \"PegasysLibrary: ZERO_ADDRESS\""
                              },
                              "value": "PegasysLibrary: ZERO_ADDRESS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9ee69ec94ff7f6018be7eaba1decd4ccc992dc21a9a8a310ab12d070194bdb6a",
                                "typeString": "literal_string \"PegasysLibrary: ZERO_ADDRESS\""
                              }
                            ],
                            "id": 3044,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "689:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "689:61:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3053,
                        "nodeType": "ExpressionStatement",
                        "src": "689:61:7"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3055,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sortTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3016,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3013,
                        "mutability": "mutable",
                        "name": "tokenA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3055,
                        "src": "384:14:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3012,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "384:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3015,
                        "mutability": "mutable",
                        "name": "tokenB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3055,
                        "src": "400:14:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3014,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "400:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "383:32:7"
                  },
                  "returnParameters": {
                    "id": 3021,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3018,
                        "mutability": "mutable",
                        "name": "token0",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3055,
                        "src": "463:14:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3017,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "463:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3020,
                        "mutability": "mutable",
                        "name": "token1",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3055,
                        "src": "479:14:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3019,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "479:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "462:32:7"
                  },
                  "scope": 3476,
                  "src": "364:393:7",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3099,
                    "nodeType": "Block",
                    "src": "979:500:7",
                    "statements": [
                      {
                        "assignments": [
                          3067,
                          3069
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3067,
                            "mutability": "mutable",
                            "name": "token0",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3099,
                            "src": "990:14:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3066,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "990:7:7",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3069,
                            "mutability": "mutable",
                            "name": "token1",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3099,
                            "src": "1006:14:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3068,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1006:7:7",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3074,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3071,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3059,
                              "src": "1035:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3072,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3061,
                              "src": "1043:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3070,
                            "name": "sortTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3055,
                            "src": "1024:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                              "typeString": "function (address,address) pure returns (address,address)"
                            }
                          },
                          "id": 3073,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1024:26:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                            "typeString": "tuple(address,address)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "989:61:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3097,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3075,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3064,
                            "src": "1060:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "ff",
                                            "id": 3083,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1186:7:7",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9",
                                              "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)"
                                            },
                                            "value": null
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 3084,
                                            "name": "factory",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3057,
                                            "src": "1219:7:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 3088,
                                                    "name": "token0",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3067,
                                                    "src": "1279:6:7",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 3089,
                                                    "name": "token1",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3069,
                                                    "src": "1287:6:7",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 3086,
                                                    "name": "abi",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -1,
                                                    "src": "1262:3:7",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_magic_abi",
                                                      "typeString": "abi"
                                                    }
                                                  },
                                                  "id": 3087,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "memberName": "encodePacked",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": null,
                                                  "src": "1262:16:7",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                    "typeString": "function () pure returns (bytes memory)"
                                                  }
                                                },
                                                "id": 3090,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "1262:32:7",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              ],
                                              "id": 3085,
                                              "name": "keccak256",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -8,
                                              "src": "1252:9:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                              }
                                            },
                                            "id": 3091,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1252:43:7",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "85c9b07c539b322c33da730d88df8396983c35a411da73d3d6c2278474890833",
                                            "id": 3092,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1321:69:7",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_8a2d49f05d1ac578573622f462dd822319bc98d7d5e8bc3085049726beb9c14f",
                                              "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)"
                                            },
                                            "value": null
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9",
                                              "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_stringliteral_8a2d49f05d1ac578573622f462dd822319bc98d7d5e8bc3085049726beb9c14f",
                                              "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 3081,
                                            "name": "abi",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -1,
                                            "src": "1144:3:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_abi",
                                              "typeString": "abi"
                                            }
                                          },
                                          "id": 3082,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberName": "encodePacked",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "1144:16:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                            "typeString": "function () pure returns (bytes memory)"
                                          }
                                        },
                                        "id": 3093,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1144:286:7",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 3080,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "1113:9:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 3094,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1113:335:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 3079,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1088:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 3078,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1088:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3095,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1088:374:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 3077,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1067:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3076,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1067:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3096,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1067:405:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1060:412:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3098,
                        "nodeType": "ExpressionStatement",
                        "src": "1060:412:7"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3100,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pairFor",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3062,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3057,
                        "mutability": "mutable",
                        "name": "factory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3100,
                        "src": "872:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3056,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "872:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3059,
                        "mutability": "mutable",
                        "name": "tokenA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3100,
                        "src": "897:14:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3058,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "897:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3061,
                        "mutability": "mutable",
                        "name": "tokenB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3100,
                        "src": "921:14:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3060,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "921:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "862:79:7"
                  },
                  "returnParameters": {
                    "id": 3065,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3064,
                        "mutability": "mutable",
                        "name": "pair",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3100,
                        "src": "965:12:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3063,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "965:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "964:14:7"
                  },
                  "scope": 3476,
                  "src": "846:633:7",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3149,
                    "nodeType": "Block",
                    "src": "1693:316:7",
                    "statements": [
                      {
                        "assignments": [
                          3114,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3114,
                            "mutability": "mutable",
                            "name": "token0",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3149,
                            "src": "1704:14:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3113,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1704:7:7",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 3119,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3116,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3104,
                              "src": "1735:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3117,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3106,
                              "src": "1743:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3115,
                            "name": "sortTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3055,
                            "src": "1724:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                              "typeString": "function (address,address) pure returns (address,address)"
                            }
                          },
                          "id": 3118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1724:26:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                            "typeString": "tuple(address,address)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1703:47:7"
                      },
                      {
                        "assignments": [
                          3121,
                          3123,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3121,
                            "mutability": "mutable",
                            "name": "reserve0",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3149,
                            "src": "1761:16:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3120,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1761:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3123,
                            "mutability": "mutable",
                            "name": "reserve1",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3149,
                            "src": "1779:16:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3122,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1779:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 3133,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3126,
                                      "name": "factory",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3102,
                                      "src": "1835:7:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 3127,
                                      "name": "tokenA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3104,
                                      "src": "1844:6:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 3128,
                                      "name": "tokenB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3106,
                                      "src": "1852:6:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 3125,
                                    "name": "pairFor",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3100,
                                    "src": "1827:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                      "typeString": "function (address,address,address) pure returns (address)"
                                    }
                                  },
                                  "id": 3129,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1827:32:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3124,
                                "name": "IPegasysPair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 304,
                                "src": "1801:12:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPegasysPair_$304_$",
                                  "typeString": "type(contract IPegasysPair)"
                                }
                              },
                              "id": 3130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1801:68:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPegasysPair_$304",
                                "typeString": "contract IPegasysPair"
                              }
                            },
                            "id": 3131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReserves",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 246,
                            "src": "1801:80:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                              "typeString": "function () view external returns (uint112,uint112,uint32)"
                            }
                          },
                          "id": 3132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1801:82:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "tuple(uint112,uint112,uint32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1760:123:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 3134,
                                "name": "reserveA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3109,
                                "src": "1894:8:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3135,
                                "name": "reserveB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3111,
                                "src": "1904:8:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 3136,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "1893:20:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3139,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3137,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3104,
                                "src": "1916:6:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3138,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3114,
                                "src": "1926:6:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1916:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 3143,
                                  "name": "reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3123,
                                  "src": "1983:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3144,
                                  "name": "reserve0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3121,
                                  "src": "1993:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 3145,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "1982:20:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "id": 3146,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "1916:86:7",
                            "trueExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 3140,
                                  "name": "reserve0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3121,
                                  "src": "1948:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3141,
                                  "name": "reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3123,
                                  "src": "1958:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 3142,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "1947:20:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "1893:109:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3148,
                        "nodeType": "ExpressionStatement",
                        "src": "1893:109:7"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3150,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReserves",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3107,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3102,
                        "mutability": "mutable",
                        "name": "factory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3150,
                        "src": "1564:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3101,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1564:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3104,
                        "mutability": "mutable",
                        "name": "tokenA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3150,
                        "src": "1589:14:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3103,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1589:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3106,
                        "mutability": "mutable",
                        "name": "tokenB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3150,
                        "src": "1613:14:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3105,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1613:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1554:79:7"
                  },
                  "returnParameters": {
                    "id": 3112,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3109,
                        "mutability": "mutable",
                        "name": "reserveA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3150,
                        "src": "1657:16:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3108,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1657:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3111,
                        "mutability": "mutable",
                        "name": "reserveB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3150,
                        "src": "1675:16:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3110,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1675:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1656:36:7"
                  },
                  "scope": 3476,
                  "src": "1534:475:7",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3188,
                    "nodeType": "Block",
                    "src": "2257:251:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3164,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3162,
                                "name": "amountA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3152,
                                "src": "2275:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3163,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2285:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2275:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506567617379734c6962726172793a20494e53554646494349454e545f414d4f554e54",
                              "id": 3165,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2288:37:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_44cbc2ebaa2cfca06d50760b4d38bcb087ce4b43dba504cfa815eba14aae87df",
                                "typeString": "literal_string \"PegasysLibrary: INSUFFICIENT_AMOUNT\""
                              },
                              "value": "PegasysLibrary: INSUFFICIENT_AMOUNT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_44cbc2ebaa2cfca06d50760b4d38bcb087ce4b43dba504cfa815eba14aae87df",
                                "typeString": "literal_string \"PegasysLibrary: INSUFFICIENT_AMOUNT\""
                              }
                            ],
                            "id": 3161,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2267:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2267:59:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3167,
                        "nodeType": "ExpressionStatement",
                        "src": "2267:59:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3175,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3169,
                                  "name": "reserveA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3154,
                                  "src": "2357:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3170,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2368:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "2357:12:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3174,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3172,
                                  "name": "reserveB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3156,
                                  "src": "2373:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3173,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2384:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "2373:12:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2357:28:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506567617379734c6962726172793a20494e53554646494349454e545f4c4951554944495459",
                              "id": 3176,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2399:40:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_55fd8f4b020e7058af785fa84a16d168997169eae431751cd55db0bfba03ce54",
                                "typeString": "literal_string \"PegasysLibrary: INSUFFICIENT_LIQUIDITY\""
                              },
                              "value": "PegasysLibrary: INSUFFICIENT_LIQUIDITY"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_55fd8f4b020e7058af785fa84a16d168997169eae431751cd55db0bfba03ce54",
                                "typeString": "literal_string \"PegasysLibrary: INSUFFICIENT_LIQUIDITY\""
                              }
                            ],
                            "id": 3168,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2336:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2336:113:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3178,
                        "nodeType": "ExpressionStatement",
                        "src": "2336:113:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3179,
                            "name": "amountB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3159,
                            "src": "2459:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3185,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3182,
                                  "name": "reserveB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3156,
                                  "src": "2481:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3180,
                                  "name": "amountA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3152,
                                  "src": "2469:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3181,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3550,
                                "src": "2469:11:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 3183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2469:21:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3184,
                              "name": "reserveA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3154,
                              "src": "2493:8:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2469:32:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2459:42:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3187,
                        "nodeType": "ExpressionStatement",
                        "src": "2459:42:7"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3189,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "quote",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3157,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3152,
                        "mutability": "mutable",
                        "name": "amountA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3189,
                        "src": "2143:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3151,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2143:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3154,
                        "mutability": "mutable",
                        "name": "reserveA",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3189,
                        "src": "2168:16:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3153,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2168:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3156,
                        "mutability": "mutable",
                        "name": "reserveB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3189,
                        "src": "2194:16:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3155,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2194:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2133:83:7"
                  },
                  "returnParameters": {
                    "id": 3160,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3159,
                        "mutability": "mutable",
                        "name": "amountB",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3189,
                        "src": "2240:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3158,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2240:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2239:17:7"
                  },
                  "scope": 3476,
                  "src": "2119:389:7",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3248,
                    "nodeType": "Block",
                    "src": "2778:440:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3203,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3201,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3191,
                                "src": "2796:8:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3202,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2807:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2796:12:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506567617379734c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54",
                              "id": 3204,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2810:43:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0af802f2b0a7adb5cd085fbf01de271c388994c2c86a0ef2470cf8dd3615d00a",
                                "typeString": "literal_string \"PegasysLibrary: INSUFFICIENT_INPUT_AMOUNT\""
                              },
                              "value": "PegasysLibrary: INSUFFICIENT_INPUT_AMOUNT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0af802f2b0a7adb5cd085fbf01de271c388994c2c86a0ef2470cf8dd3615d00a",
                                "typeString": "literal_string \"PegasysLibrary: INSUFFICIENT_INPUT_AMOUNT\""
                              }
                            ],
                            "id": 3200,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2788:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2788:66:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3206,
                        "nodeType": "ExpressionStatement",
                        "src": "2788:66:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3214,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3210,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3208,
                                  "name": "reserveIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3193,
                                  "src": "2885:9:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3209,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2897:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "2885:13:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3213,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3211,
                                  "name": "reserveOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3195,
                                  "src": "2902:10:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3212,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2915:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "2902:14:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2885:31:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506567617379734c6962726172793a20494e53554646494349454e545f4c4951554944495459",
                              "id": 3215,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2930:40:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_55fd8f4b020e7058af785fa84a16d168997169eae431751cd55db0bfba03ce54",
                                "typeString": "literal_string \"PegasysLibrary: INSUFFICIENT_LIQUIDITY\""
                              },
                              "value": "PegasysLibrary: INSUFFICIENT_LIQUIDITY"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_55fd8f4b020e7058af785fa84a16d168997169eae431751cd55db0bfba03ce54",
                                "typeString": "literal_string \"PegasysLibrary: INSUFFICIENT_LIQUIDITY\""
                              }
                            ],
                            "id": 3207,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2864:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2864:116:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3217,
                        "nodeType": "ExpressionStatement",
                        "src": "2864:116:7"
                      },
                      {
                        "assignments": [
                          3219
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3219,
                            "mutability": "mutable",
                            "name": "amountInWithFee",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3248,
                            "src": "2990:23:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3218,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2990:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3224,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "393937",
                              "id": 3222,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3029:3:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_997_by_1",
                                "typeString": "int_const 997"
                              },
                              "value": "997"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_997_by_1",
                                "typeString": "int_const 997"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3220,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3191,
                              "src": "3016:8:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3221,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3550,
                            "src": "3016:12:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3016:17:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2990:43:7"
                      },
                      {
                        "assignments": [
                          3226
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3226,
                            "mutability": "mutable",
                            "name": "numerator",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3248,
                            "src": "3043:17:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3225,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3043:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3231,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3229,
                              "name": "reserveOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3195,
                              "src": "3083:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3227,
                              "name": "amountInWithFee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3219,
                              "src": "3063:15:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3550,
                            "src": "3063:19:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3063:31:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3043:51:7"
                      },
                      {
                        "assignments": [
                          3233
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3233,
                            "mutability": "mutable",
                            "name": "denominator",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3248,
                            "src": "3104:19:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3232,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3104:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3241,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3239,
                              "name": "amountInWithFee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3219,
                              "src": "3150:15:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31303030",
                                  "id": 3236,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3140:4:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  },
                                  "value": "1000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3234,
                                  "name": "reserveIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3193,
                                  "src": "3126:9:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3235,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3550,
                                "src": "3126:13:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 3237,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3126:19:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3238,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3500,
                            "src": "3126:23:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3126:40:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3104:62:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3246,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3242,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3198,
                            "src": "3176:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3245,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3243,
                              "name": "numerator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3226,
                              "src": "3188:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3244,
                              "name": "denominator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3233,
                              "src": "3200:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3188:23:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3176:35:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3247,
                        "nodeType": "ExpressionStatement",
                        "src": "3176:35:7"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3249,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountOut",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3196,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3191,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3249,
                        "src": "2658:16:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3190,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2658:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3193,
                        "mutability": "mutable",
                        "name": "reserveIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3249,
                        "src": "2684:17:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3192,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2684:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3195,
                        "mutability": "mutable",
                        "name": "reserveOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3249,
                        "src": "2711:18:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3194,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2711:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2648:87:7"
                  },
                  "returnParameters": {
                    "id": 3199,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3198,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3249,
                        "src": "2759:17:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3197,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2759:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2758:19:7"
                  },
                  "scope": 3476,
                  "src": "2627:591:7",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3308,
                    "nodeType": "Block",
                    "src": "3486:394:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3263,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3261,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3251,
                                "src": "3504:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3262,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3516:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3504:13:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506567617379734c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                              "id": 3264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3519:44:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_774003eb31efcb345fc681cf772dae9b06748d3edd4f5920bb4012dfceb78563",
                                "typeString": "literal_string \"PegasysLibrary: INSUFFICIENT_OUTPUT_AMOUNT\""
                              },
                              "value": "PegasysLibrary: INSUFFICIENT_OUTPUT_AMOUNT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_774003eb31efcb345fc681cf772dae9b06748d3edd4f5920bb4012dfceb78563",
                                "typeString": "literal_string \"PegasysLibrary: INSUFFICIENT_OUTPUT_AMOUNT\""
                              }
                            ],
                            "id": 3260,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3496:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3496:68:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3266,
                        "nodeType": "ExpressionStatement",
                        "src": "3496:68:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3274,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3270,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3268,
                                  "name": "reserveIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3253,
                                  "src": "3595:9:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3269,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3607:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3595:13:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3273,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3271,
                                  "name": "reserveOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3255,
                                  "src": "3612:10:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3272,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3625:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3612:14:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3595:31:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506567617379734c6962726172793a20494e53554646494349454e545f4c4951554944495459",
                              "id": 3275,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3640:40:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_55fd8f4b020e7058af785fa84a16d168997169eae431751cd55db0bfba03ce54",
                                "typeString": "literal_string \"PegasysLibrary: INSUFFICIENT_LIQUIDITY\""
                              },
                              "value": "PegasysLibrary: INSUFFICIENT_LIQUIDITY"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_55fd8f4b020e7058af785fa84a16d168997169eae431751cd55db0bfba03ce54",
                                "typeString": "literal_string \"PegasysLibrary: INSUFFICIENT_LIQUIDITY\""
                              }
                            ],
                            "id": 3267,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3574:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3276,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3574:116:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3277,
                        "nodeType": "ExpressionStatement",
                        "src": "3574:116:7"
                      },
                      {
                        "assignments": [
                          3279
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3279,
                            "mutability": "mutable",
                            "name": "numerator",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3308,
                            "src": "3700:17:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3278,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3700:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3287,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31303030",
                              "id": 3285,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3749:4:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1000_by_1",
                                "typeString": "int_const 1000"
                              },
                              "value": "1000"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1000_by_1",
                                "typeString": "int_const 1000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3282,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3251,
                                  "src": "3734:9:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3280,
                                  "name": "reserveIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3253,
                                  "src": "3720:9:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3281,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3550,
                                "src": "3720:13:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 3283,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3720:24:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3284,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3550,
                            "src": "3720:28:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3720:34:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3700:54:7"
                      },
                      {
                        "assignments": [
                          3289
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3289,
                            "mutability": "mutable",
                            "name": "denominator",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3308,
                            "src": "3764:19:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3288,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3764:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3297,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "393937",
                              "id": 3295,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3816:3:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_997_by_1",
                                "typeString": "int_const 997"
                              },
                              "value": "997"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_997_by_1",
                                "typeString": "int_const 997"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3292,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3251,
                                  "src": "3801:9:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3290,
                                  "name": "reserveOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3255,
                                  "src": "3786:10:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3291,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3522,
                                "src": "3786:14:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 3293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3786:25:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3294,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3550,
                            "src": "3786:29:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3786:34:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3764:56:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3298,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3258,
                            "src": "3830:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 3304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3871:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3301,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 3299,
                                      "name": "numerator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3279,
                                      "src": "3842:9:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 3300,
                                      "name": "denominator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3289,
                                      "src": "3854:11:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3842:23:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 3302,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3841:25:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3500,
                              "src": "3841:29:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3841:32:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3830:43:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3307,
                        "nodeType": "ExpressionStatement",
                        "src": "3830:43:7"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3309,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountIn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3256,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3251,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3309,
                        "src": "3366:17:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3250,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3366:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3253,
                        "mutability": "mutable",
                        "name": "reserveIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3309,
                        "src": "3393:17:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3252,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3393:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3255,
                        "mutability": "mutable",
                        "name": "reserveOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3309,
                        "src": "3420:18:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3254,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3420:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3356:88:7"
                  },
                  "returnParameters": {
                    "id": 3259,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3258,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3309,
                        "src": "3468:16:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3257,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3468:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3467:18:7"
                  },
                  "scope": 3476,
                  "src": "3336:544:7",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3389,
                    "nodeType": "Block",
                    "src": "4119:451:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3326,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3323,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3316,
                                  "src": "4137:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3324,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4137:11:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 3325,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4152:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "4137:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506567617379734c6962726172793a20494e56414c49445f50415448",
                              "id": 3327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4155:30:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ffb3178b93257f96d59d2f40bc3d84624e11e0926e56489b9c56ac2931b1ddc3",
                                "typeString": "literal_string \"PegasysLibrary: INVALID_PATH\""
                              },
                              "value": "PegasysLibrary: INVALID_PATH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ffb3178b93257f96d59d2f40bc3d84624e11e0926e56489b9c56ac2931b1ddc3",
                                "typeString": "literal_string \"PegasysLibrary: INVALID_PATH\""
                              }
                            ],
                            "id": 3322,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4129:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4129:57:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3329,
                        "nodeType": "ExpressionStatement",
                        "src": "4129:57:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3330,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3320,
                            "src": "4196:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3334,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3316,
                                  "src": "4220:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3335,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4220:11:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 3333,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "4206:13:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (uint256[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 3331,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4210:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3332,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "4210:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                  "typeString": "uint256[]"
                                }
                              }
                            },
                            "id": 3336,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4206:26:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "4196:36:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 3338,
                        "nodeType": "ExpressionStatement",
                        "src": "4196:36:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3343,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3339,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3320,
                              "src": "4242:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3341,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3340,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4250:1:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4242:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3342,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3313,
                            "src": "4255:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4242:21:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3344,
                        "nodeType": "ExpressionStatement",
                        "src": "4242:21:7"
                      },
                      {
                        "body": {
                          "id": 3387,
                          "nodeType": "Block",
                          "src": "4315:249:7",
                          "statements": [
                            {
                              "assignments": [
                                3358,
                                3360
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3358,
                                  "mutability": "mutable",
                                  "name": "reserveIn",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 3387,
                                  "src": "4330:17:7",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3357,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4330:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 3360,
                                  "mutability": "mutable",
                                  "name": "reserveOut",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 3387,
                                  "src": "4349:18:7",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3359,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4349:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3372,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3362,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3311,
                                    "src": "4400:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3363,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3316,
                                      "src": "4425:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 3365,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3364,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3346,
                                      "src": "4430:1:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4425:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3366,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3316,
                                      "src": "4450:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 3370,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3369,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3367,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3346,
                                        "src": "4455:1:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 3368,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4459:1:7",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "4455:5:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4450:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3361,
                                  "name": "getReserves",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3150,
                                  "src": "4371:11:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (address,address,address) view returns (uint256,uint256)"
                                  }
                                },
                                "id": 3371,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4371:104:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4329:146:7"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3385,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3373,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3320,
                                    "src": "4489:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 3377,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3376,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 3374,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3346,
                                      "src": "4497:1:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 3375,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4501:1:7",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "4497:5:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4489:14:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 3379,
                                        "name": "amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3320,
                                        "src": "4519:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 3381,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 3380,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3346,
                                        "src": "4527:1:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4519:10:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 3382,
                                      "name": "reserveIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3358,
                                      "src": "4531:9:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 3383,
                                      "name": "reserveOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3360,
                                      "src": "4542:10:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 3378,
                                    "name": "getAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3249,
                                    "src": "4506:12:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 3384,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4506:47:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4489:64:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3386,
                              "nodeType": "ExpressionStatement",
                              "src": "4489:64:7"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3353,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3348,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3346,
                            "src": "4289:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3349,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3316,
                                "src": "4293:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 3350,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4293:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3351,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4307:1:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "4293:15:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4289:19:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3388,
                        "initializationExpression": {
                          "assignments": [
                            3346
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3346,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 3388,
                              "src": "4278:9:7",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3345,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4278:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 3347,
                          "initialValue": null,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4278:9:7"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 3355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4310:3:7",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 3354,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3346,
                              "src": "4310:1:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3356,
                          "nodeType": "ExpressionStatement",
                          "src": "4310:3:7"
                        },
                        "nodeType": "ForStatement",
                        "src": "4273:291:7"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3390,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountsOut",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3317,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3311,
                        "mutability": "mutable",
                        "name": "factory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3390,
                        "src": "3991:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3310,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3991:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3313,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3390,
                        "src": "4016:16:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3312,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4016:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3316,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3390,
                        "src": "4042:21:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3314,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4042:7:7",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 3315,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4042:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3981:88:7"
                  },
                  "returnParameters": {
                    "id": 3321,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3320,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3390,
                        "src": "4093:24:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3318,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4093:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3319,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4093:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4092:26:7"
                  },
                  "scope": 3476,
                  "src": "3959:611:7",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3474,
                    "nodeType": "Block",
                    "src": "4808:472:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3407,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3404,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3397,
                                  "src": "4826:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3405,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4826:11:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 3406,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4841:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "4826:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506567617379734c6962726172793a20494e56414c49445f50415448",
                              "id": 3408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4844:30:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ffb3178b93257f96d59d2f40bc3d84624e11e0926e56489b9c56ac2931b1ddc3",
                                "typeString": "literal_string \"PegasysLibrary: INVALID_PATH\""
                              },
                              "value": "PegasysLibrary: INVALID_PATH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ffb3178b93257f96d59d2f40bc3d84624e11e0926e56489b9c56ac2931b1ddc3",
                                "typeString": "literal_string \"PegasysLibrary: INVALID_PATH\""
                              }
                            ],
                            "id": 3403,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4818:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4818:57:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3410,
                        "nodeType": "ExpressionStatement",
                        "src": "4818:57:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3411,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3401,
                            "src": "4885:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3415,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3397,
                                  "src": "4909:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 3416,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4909:11:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 3414,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "4895:13:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (uint256[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 3412,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4899:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3413,
                                "length": null,
                                "nodeType": "ArrayTypeName",
                                "src": "4899:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                  "typeString": "uint256[]"
                                }
                              }
                            },
                            "id": 3417,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4895:26:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "4885:36:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 3419,
                        "nodeType": "ExpressionStatement",
                        "src": "4885:36:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3420,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3401,
                              "src": "4931:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3425,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3424,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3421,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3401,
                                  "src": "4939:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4939:14:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 3423,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4956:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "4939:18:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4931:27:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3426,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3394,
                            "src": "4961:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4931:39:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3428,
                        "nodeType": "ExpressionStatement",
                        "src": "4931:39:7"
                      },
                      {
                        "body": {
                          "id": 3472,
                          "nodeType": "Block",
                          "src": "5026:248:7",
                          "statements": [
                            {
                              "assignments": [
                                3443,
                                3445
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3443,
                                  "mutability": "mutable",
                                  "name": "reserveIn",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 3472,
                                  "src": "5041:17:7",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3442,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5041:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 3445,
                                  "mutability": "mutable",
                                  "name": "reserveOut",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 3472,
                                  "src": "5060:18:7",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3444,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5060:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3457,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3447,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3392,
                                    "src": "5111:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3448,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3397,
                                      "src": "5136:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 3452,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3451,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3449,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3430,
                                        "src": "5141:1:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 3450,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5145:1:7",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "5141:5:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5136:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3453,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3397,
                                      "src": "5165:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 3455,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3454,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3430,
                                      "src": "5170:1:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5165:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3446,
                                  "name": "getReserves",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3150,
                                  "src": "5082:11:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (address,address,address) view returns (uint256,uint256)"
                                  }
                                },
                                "id": 3456,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5082:104:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5040:146:7"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3470,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3458,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3401,
                                    "src": "5200:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 3462,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3461,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 3459,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3430,
                                      "src": "5208:1:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 3460,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5212:1:7",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "5208:5:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5200:14:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 3464,
                                        "name": "amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3401,
                                        "src": "5229:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 3466,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 3465,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3430,
                                        "src": "5237:1:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5229:10:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 3467,
                                      "name": "reserveIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3443,
                                      "src": "5241:9:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 3468,
                                      "name": "reserveOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3445,
                                      "src": "5252:10:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 3463,
                                    "name": "getAmountIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3309,
                                    "src": "5217:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 3469,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5217:46:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5200:63:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3471,
                              "nodeType": "ExpressionStatement",
                              "src": "5200:63:7"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3436,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3430,
                            "src": "5014:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5018:1:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5014:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3473,
                        "initializationExpression": {
                          "assignments": [
                            3430
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3430,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 3473,
                              "src": "4985:9:7",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3429,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4985:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 3435,
                          "initialValue": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3434,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3431,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3397,
                                "src": "4997:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 3432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4997:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 3433,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5011:1:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "4997:15:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4985:27:7"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 3440,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "--",
                            "prefix": false,
                            "src": "5021:3:7",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 3439,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3430,
                              "src": "5021:1:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3441,
                          "nodeType": "ExpressionStatement",
                          "src": "5021:3:7"
                        },
                        "nodeType": "ForStatement",
                        "src": "4980:294:7"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3475,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountsIn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3398,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3392,
                        "mutability": "mutable",
                        "name": "factory",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3475,
                        "src": "4679:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3391,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4679:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3394,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3475,
                        "src": "4704:17:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3393,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4704:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3397,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3475,
                        "src": "4731:21:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3395,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4731:7:7",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 3396,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4731:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4669:89:7"
                  },
                  "returnParameters": {
                    "id": 3402,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3401,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3475,
                        "src": "4782:24:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3399,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4782:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3400,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "4782:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4781:26:7"
                  },
                  "scope": 3476,
                  "src": "4648:632:7",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3477,
              "src": "202:5080:7"
            }
          ],
          "src": "32:5251:7"
        },
        "id": 7
      },
      "contracts/pegasys-periphery/libraries/SafeMath.sol": {
        "ast": {
          "absolutePath": "contracts/pegasys-periphery/libraries/SafeMath.sol",
          "exportedSymbols": {
            "SafeMath": [
              3574
            ]
          },
          "id": 3575,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3478,
              "literals": [
                "solidity",
                ">=",
                "0.6",
                ".6",
                "<",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:31:8"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": null,
              "fullyImplemented": true,
              "id": 3574,
              "linearizedBaseContracts": [
                3574
              ],
              "name": "SafeMath",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3499,
                    "nodeType": "Block",
                    "src": "263:66:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3495,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3492,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 3488,
                                      "name": "z",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3485,
                                      "src": "282:1:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3491,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3489,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3480,
                                        "src": "286:1:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3490,
                                        "name": "y",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3482,
                                        "src": "290:1:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "286:5:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "282:9:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 3493,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "281:11:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3494,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3480,
                                "src": "296:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "281:16:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "64732d6d6174682d6164642d6f766572666c6f77",
                              "id": 3496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "299:22:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db",
                                "typeString": "literal_string \"ds-math-add-overflow\""
                              },
                              "value": "ds-math-add-overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db",
                                "typeString": "literal_string \"ds-math-add-overflow\""
                              }
                            ],
                            "id": 3487,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "273:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3497,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "273:49:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3498,
                        "nodeType": "ExpressionStatement",
                        "src": "273:49:8"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3500,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3483,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3480,
                        "mutability": "mutable",
                        "name": "x",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3500,
                        "src": "207:9:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3479,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "207:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3482,
                        "mutability": "mutable",
                        "name": "y",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3500,
                        "src": "218:9:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3481,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "218:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "206:22:8"
                  },
                  "returnParameters": {
                    "id": 3486,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3485,
                        "mutability": "mutable",
                        "name": "z",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3500,
                        "src": "252:9:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3484,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "252:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "251:11:8"
                  },
                  "scope": 3574,
                  "src": "194:135:8",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3521,
                    "nodeType": "Block",
                    "src": "404:67:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3514,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 3510,
                                      "name": "z",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3507,
                                      "src": "423:1:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3513,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3511,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3502,
                                        "src": "427:1:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 3512,
                                        "name": "y",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3504,
                                        "src": "431:1:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "427:5:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "423:9:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 3515,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "422:11:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3516,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3502,
                                "src": "437:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "422:16:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "64732d6d6174682d7375622d756e646572666c6f77",
                              "id": 3518,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "440:23:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590",
                                "typeString": "literal_string \"ds-math-sub-underflow\""
                              },
                              "value": "ds-math-sub-underflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590",
                                "typeString": "literal_string \"ds-math-sub-underflow\""
                              }
                            ],
                            "id": 3509,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "414:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3519,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "414:50:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3520,
                        "nodeType": "ExpressionStatement",
                        "src": "414:50:8"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3522,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3505,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3502,
                        "mutability": "mutable",
                        "name": "x",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3522,
                        "src": "348:9:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3501,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "348:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3504,
                        "mutability": "mutable",
                        "name": "y",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3522,
                        "src": "359:9:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3503,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "359:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "347:22:8"
                  },
                  "returnParameters": {
                    "id": 3508,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3507,
                        "mutability": "mutable",
                        "name": "z",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3522,
                        "src": "393:9:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3506,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "393:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "392:11:8"
                  },
                  "scope": 3574,
                  "src": "335:136:8",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3549,
                    "nodeType": "Block",
                    "src": "546:80:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3545,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3534,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3532,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3526,
                                  "src": "564:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3533,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "569:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "564:6:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3544,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3542,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3539,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "argumentTypes": null,
                                          "id": 3535,
                                          "name": "z",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3529,
                                          "src": "575:1:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 3538,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 3536,
                                            "name": "x",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3524,
                                            "src": "579:1:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 3537,
                                            "name": "y",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3526,
                                            "src": "583:1:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "579:5:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "575:9:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3540,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "574:11:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 3541,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3526,
                                    "src": "588:1:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "574:15:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3543,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3524,
                                  "src": "593:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "574:20:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "564:30:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "64732d6d6174682d6d756c2d6f766572666c6f77",
                              "id": 3546,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "596:22:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd",
                                "typeString": "literal_string \"ds-math-mul-overflow\""
                              },
                              "value": "ds-math-mul-overflow"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd",
                                "typeString": "literal_string \"ds-math-mul-overflow\""
                              }
                            ],
                            "id": 3531,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "556:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "556:63:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3548,
                        "nodeType": "ExpressionStatement",
                        "src": "556:63:8"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3550,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mul",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3527,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3524,
                        "mutability": "mutable",
                        "name": "x",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3550,
                        "src": "490:9:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3523,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "490:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3526,
                        "mutability": "mutable",
                        "name": "y",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3550,
                        "src": "501:9:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3525,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "501:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "489:22:8"
                  },
                  "returnParameters": {
                    "id": 3530,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3529,
                        "mutability": "mutable",
                        "name": "z",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3550,
                        "src": "535:9:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3528,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "535:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "534:11:8"
                  },
                  "scope": 3574,
                  "src": "477:149:8",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3572,
                    "nodeType": "Block",
                    "src": "701:75:8",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3562,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3560,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3554,
                                "src": "719:1:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "723:1:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "719:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "536166654d6174683a20446976206279205a65726f",
                              "id": 3563,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "726:23:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_94c5016b55ff77e86d3194ba5ebdb0841b80400ebb0fe97e24880f7489a5ef28",
                                "typeString": "literal_string \"SafeMath: Div by Zero\""
                              },
                              "value": "SafeMath: Div by Zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_94c5016b55ff77e86d3194ba5ebdb0841b80400ebb0fe97e24880f7489a5ef28",
                                "typeString": "literal_string \"SafeMath: Div by Zero\""
                              }
                            ],
                            "id": 3559,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "711:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3564,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "711:39:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3565,
                        "nodeType": "ExpressionStatement",
                        "src": "711:39:8"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3566,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3557,
                            "src": "760:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3569,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3567,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3552,
                              "src": "764:1:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3568,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3554,
                              "src": "768:1:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "764:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "760:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3571,
                        "nodeType": "ExpressionStatement",
                        "src": "760:9:8"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3573,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "div",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3555,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3552,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3573,
                        "src": "645:9:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3551,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "645:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3554,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3573,
                        "src": "656:9:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3553,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "656:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "644:22:8"
                  },
                  "returnParameters": {
                    "id": 3558,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3557,
                        "mutability": "mutable",
                        "name": "c",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3573,
                        "src": "690:9:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3556,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "690:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "689:11:8"
                  },
                  "scope": 3574,
                  "src": "632:144:8",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3575,
              "src": "171:607:8"
            }
          ],
          "src": "32:747:8"
        },
        "id": 8
      },
      "contracts/pegasys-periphery/test/DeflatingERC20.sol": {
        "ast": {
          "absolutePath": "contracts/pegasys-periphery/test/DeflatingERC20.sol",
          "exportedSymbols": {
            "DeflatingERC20": [
              3989
            ]
          },
          "id": 3990,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3576,
              "literals": [
                "solidity",
                "=",
                "0.6",
                ".6"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:9"
            },
            {
              "absolutePath": "contracts/pegasys-periphery/libraries/SafeMath.sol",
              "file": "../libraries/SafeMath.sol",
              "id": 3577,
              "nodeType": "ImportDirective",
              "scope": 3990,
              "sourceUnit": 3575,
              "src": "25:35:9",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 3989,
              "linearizedBaseContracts": [
                3989
              ],
              "name": "DeflatingERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 3580,
                  "libraryName": {
                    "contractScope": null,
                    "id": 3578,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3574,
                    "src": "98:8:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$3574",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "92:27:9",
                  "typeName": {
                    "id": 3579,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "111:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": true,
                  "functionSelector": "06fdde03",
                  "id": 3583,
                  "mutability": "constant",
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3989,
                  "src": "125:52:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3581,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "125:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "4465666c6174696e67205465737420546f6b656e",
                    "id": 3582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "155:22:9",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_f89e31130e6fd3d87d62a1ac2770fba58bed5a06c47ce70fa97f8218b1b2743a",
                      "typeString": "literal_string \"Deflating Test Token\""
                    },
                    "value": "Deflating Test Token"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "95d89b41",
                  "id": 3586,
                  "mutability": "constant",
                  "name": "symbol",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3989,
                  "src": "183:37:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3584,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "183:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "445454",
                    "id": 3585,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "215:5:9",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_0862d7701ae2a04548299440d8e9bcde598aaa04f40d2b263697efe0cc6c0bb4",
                      "typeString": "literal_string \"DTT\""
                    },
                    "value": "DTT"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "313ce567",
                  "id": 3589,
                  "mutability": "constant",
                  "name": "decimals",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3989,
                  "src": "226:35:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3587,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "226:5:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3138",
                    "id": 3588,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "259:2:9",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_18_by_1",
                      "typeString": "int_const 18"
                    },
                    "value": "18"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "18160ddd",
                  "id": 3591,
                  "mutability": "mutable",
                  "name": "totalSupply",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3989,
                  "src": "267:26:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3590,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "267:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "70a08231",
                  "id": 3595,
                  "mutability": "mutable",
                  "name": "balanceOf",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3989,
                  "src": "299:44:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 3594,
                    "keyType": {
                      "id": 3592,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "307:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "299:27:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 3593,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "318:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "dd62ed3e",
                  "id": 3601,
                  "mutability": "mutable",
                  "name": "allowance",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3989,
                  "src": "349:64:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 3600,
                    "keyType": {
                      "id": 3596,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "357:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "349:47:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 3599,
                      "keyType": {
                        "id": 3597,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "376:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "368:27:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 3598,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "387:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "3644e515",
                  "id": 3603,
                  "mutability": "mutable",
                  "name": "DOMAIN_SEPARATOR",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3989,
                  "src": "420:31:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3602,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "420:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "30adf81f",
                  "id": 3606,
                  "mutability": "constant",
                  "name": "PERMIT_TYPEHASH",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3989,
                  "src": "561:116:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3604,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "561:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307836653731656461653132623162393766346431663630333730666566313031303566613266616165303132363131346131363963363438343564363132366339",
                    "id": 3605,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "611:66:9",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_49955707469362902507454157297736832118868343942642399513960811609542965143241_by_1",
                      "typeString": "int_const 4995...(69 digits omitted)...3241"
                    },
                    "value": "0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "7ecebe00",
                  "id": 3610,
                  "mutability": "mutable",
                  "name": "nonces",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3989,
                  "src": "683:41:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 3609,
                    "keyType": {
                      "id": 3607,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "691:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "683:27:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 3608,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "702:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 3618,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3617,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3612,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3618,
                        "src": "755:21:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3611,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "755:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3614,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3618,
                        "src": "786:23:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3613,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "786:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3616,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3618,
                        "src": "819:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3615,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "819:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "745:93:9"
                  },
                  "src": "731:108:9"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 3626,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3625,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3620,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3626,
                        "src": "859:20:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3619,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "859:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3622,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3626,
                        "src": "881:18:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3621,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "881:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3624,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3626,
                        "src": "901:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3623,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "901:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "858:57:9"
                  },
                  "src": "844:72:9"
                },
                {
                  "body": {
                    "id": 3669,
                    "nodeType": "Block",
                    "src": "963:507:9",
                    "statements": [
                      {
                        "assignments": [
                          3632
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3632,
                            "mutability": "mutable",
                            "name": "chainId",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3669,
                            "src": "973:15:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3631,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "973:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3633,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "973:15:9"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1007:44:9",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1021:20:9",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "chainid",
                                  "nodeType": "YulIdentifier",
                                  "src": "1032:7:9"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1032:9:9"
                              },
                              "variableNames": [
                                {
                                  "name": "chainId",
                                  "nodeType": "YulIdentifier",
                                  "src": "1021:7:9"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 3632,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1021:7:9",
                            "valueSize": 1
                          }
                        ],
                        "id": 3634,
                        "nodeType": "InlineAssembly",
                        "src": "998:53:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3635,
                            "name": "DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3603,
                            "src": "1060:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                                        "id": 3640,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1161:84:9",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                          "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                        },
                                        "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                          "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                        }
                                      ],
                                      "id": 3639,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "1130:9:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 3641,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1130:133:9",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 3645,
                                            "name": "name",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3583,
                                            "src": "1297:4:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          ],
                                          "id": 3644,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1291:5:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": {
                                            "id": 3643,
                                            "name": "bytes",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1291:5:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 3646,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1291:11:9",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 3642,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "1281:9:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 3647,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1281:22:9",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 3651,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1337:3:9",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                              "typeString": "literal_string \"1\""
                                            },
                                            "value": "1"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                              "typeString": "literal_string \"1\""
                                            }
                                          ],
                                          "id": 3650,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1331:5:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": {
                                            "id": 3649,
                                            "name": "bytes",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1331:5:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 3652,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1331:10:9",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 3648,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "1321:9:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 3653,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1321:21:9",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3654,
                                    "name": "chainId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3632,
                                    "src": "1360:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3657,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "1393:4:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_DeflatingERC20_$3989",
                                          "typeString": "contract DeflatingERC20"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_DeflatingERC20_$3989",
                                          "typeString": "contract DeflatingERC20"
                                        }
                                      ],
                                      "id": 3656,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1385:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3655,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1385:7:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 3658,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1385:13:9",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3637,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "1102:3:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 3638,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1102:10:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 3659,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1102:310:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 3636,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "1079:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 3660,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1079:343:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "1060:362:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3662,
                        "nodeType": "ExpressionStatement",
                        "src": "1060:362:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3664,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1438:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3665,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1438:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3666,
                              "name": "_totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3628,
                              "src": "1450:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3663,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3705,
                            "src": "1432:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 3667,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1432:31:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3668,
                        "nodeType": "ExpressionStatement",
                        "src": "1432:31:9"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3670,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3629,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3628,
                        "mutability": "mutable",
                        "name": "_totalSupply",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3670,
                        "src": "934:20:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3627,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "934:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "933:22:9"
                  },
                  "returnParameters": {
                    "id": 3630,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "963:0:9"
                  },
                  "scope": 3989,
                  "src": "922:548:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3704,
                    "nodeType": "Block",
                    "src": "1527:149:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3682,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3677,
                            "name": "totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3591,
                            "src": "1537:11:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3680,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3674,
                                "src": "1567:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3678,
                                "name": "totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3591,
                                "src": "1551:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3679,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3500,
                              "src": "1551:15:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3681,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1551:22:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1537:36:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3683,
                        "nodeType": "ExpressionStatement",
                        "src": "1537:36:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3693,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3684,
                              "name": "balanceOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3595,
                              "src": "1583:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3686,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3685,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3672,
                              "src": "1593:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1583:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3691,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3674,
                                "src": "1617:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3687,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3595,
                                  "src": "1599:9:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3689,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3688,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3672,
                                  "src": "1609:2:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1599:13:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3690,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3500,
                              "src": "1599:17:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3692,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1599:24:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1583:40:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3694,
                        "nodeType": "ExpressionStatement",
                        "src": "1583:40:9"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3698,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1655:1:9",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 3697,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1647:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3696,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1647:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 3699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1647:10:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3700,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3672,
                              "src": "1659:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3701,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3674,
                              "src": "1663:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3695,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3626,
                            "src": "1638:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1638:31:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3703,
                        "nodeType": "EmitStatement",
                        "src": "1633:36:9"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3705,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3675,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3672,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3705,
                        "src": "1491:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3671,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1491:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3674,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3705,
                        "src": "1503:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3673,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1503:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1490:27:9"
                  },
                  "returnParameters": {
                    "id": 3676,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1527:0:9"
                  },
                  "scope": 3989,
                  "src": "1476:200:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3739,
                    "nodeType": "Block",
                    "src": "1735:155:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3712,
                              "name": "balanceOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3595,
                              "src": "1745:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3714,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3713,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3707,
                              "src": "1755:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1745:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3719,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3709,
                                "src": "1783:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3715,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3595,
                                  "src": "1763:9:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3717,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3716,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3707,
                                  "src": "1773:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1763:15:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3522,
                              "src": "1763:19:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1763:26:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1745:44:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3722,
                        "nodeType": "ExpressionStatement",
                        "src": "1745:44:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 3723,
                            "name": "totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3591,
                            "src": "1799:11:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3726,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3709,
                                "src": "1829:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3724,
                                "name": "totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3591,
                                "src": "1813:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3725,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3522,
                              "src": "1813:15:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3727,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1813:22:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1799:36:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3729,
                        "nodeType": "ExpressionStatement",
                        "src": "1799:36:9"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3731,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3707,
                              "src": "1859:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3734,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1873:1:9",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 3733,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1865:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3732,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1865:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 3735,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1865:10:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3736,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3709,
                              "src": "1877:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3730,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3626,
                            "src": "1850:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1850:33:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3738,
                        "nodeType": "EmitStatement",
                        "src": "1845:38:9"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3740,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3710,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3707,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3740,
                        "src": "1697:12:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3706,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1697:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3709,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3740,
                        "src": "1711:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3708,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1711:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1696:29:9"
                  },
                  "returnParameters": {
                    "id": 3711,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1735:0:9"
                  },
                  "scope": 3989,
                  "src": "1682:208:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3763,
                    "nodeType": "Block",
                    "src": "1999:96:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3755,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3749,
                                "name": "allowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3601,
                                "src": "2009:9:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 3752,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3750,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3742,
                                "src": "2019:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2009:16:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3753,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3751,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3744,
                              "src": "2026:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2009:25:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 3754,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3746,
                            "src": "2037:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2009:33:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3756,
                        "nodeType": "ExpressionStatement",
                        "src": "2009:33:9"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3758,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3742,
                              "src": "2066:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3759,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3744,
                              "src": "2073:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3760,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3746,
                              "src": "2082:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3757,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3618,
                            "src": "2057:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3761,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2057:31:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3762,
                        "nodeType": "EmitStatement",
                        "src": "2052:36:9"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3764,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3747,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3742,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3764,
                        "src": "1923:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3741,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1923:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3744,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3764,
                        "src": "1946:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3743,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1946:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3746,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3764,
                        "src": "1971:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3745,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1971:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1913:77:9"
                  },
                  "returnParameters": {
                    "id": 3748,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1999:0:9"
                  },
                  "scope": 3989,
                  "src": "1896:199:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 3819,
                    "nodeType": "Block",
                    "src": "2199:309:9",
                    "statements": [
                      {
                        "assignments": [
                          3774
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3774,
                            "mutability": "mutable",
                            "name": "burnAmount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3819,
                            "src": "2209:18:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3773,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2209:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3778,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3775,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3770,
                            "src": "2230:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 3776,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2238:3:9",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "2230:11:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2209:32:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3780,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3766,
                              "src": "2257:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3781,
                              "name": "burnAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3774,
                              "src": "2263:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3779,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3740,
                            "src": "2251:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 3782,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2251:23:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3783,
                        "nodeType": "ExpressionStatement",
                        "src": "2251:23:9"
                      },
                      {
                        "assignments": [
                          3785
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3785,
                            "mutability": "mutable",
                            "name": "transferAmount",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3819,
                            "src": "2284:22:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3784,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2284:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3790,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3788,
                              "name": "burnAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3774,
                              "src": "2319:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3786,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3770,
                              "src": "2309:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3522,
                            "src": "2309:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2309:21:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2284:46:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3791,
                              "name": "balanceOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3595,
                              "src": "2340:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3793,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3792,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3766,
                              "src": "2350:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2340:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3798,
                                "name": "transferAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3785,
                                "src": "2378:14:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3794,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3595,
                                  "src": "2358:9:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3796,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3795,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3766,
                                  "src": "2368:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2358:15:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3797,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3522,
                              "src": "2358:19:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3799,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2358:35:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2340:53:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3801,
                        "nodeType": "ExpressionStatement",
                        "src": "2340:53:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3811,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3802,
                              "name": "balanceOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3595,
                              "src": "2403:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3804,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 3803,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3768,
                              "src": "2413:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2403:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3809,
                                "name": "transferAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3785,
                                "src": "2437:14:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3805,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3595,
                                  "src": "2419:9:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3807,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 3806,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3768,
                                  "src": "2429:2:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2419:13:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3808,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3500,
                              "src": "2419:17:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3810,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2419:33:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2403:49:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3812,
                        "nodeType": "ExpressionStatement",
                        "src": "2403:49:9"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3814,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3766,
                              "src": "2476:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3815,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3768,
                              "src": "2482:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3816,
                              "name": "transferAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3785,
                              "src": "2486:14:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3813,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3626,
                            "src": "2467:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3817,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2467:34:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3818,
                        "nodeType": "EmitStatement",
                        "src": "2462:39:9"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 3820,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3771,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3766,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3820,
                        "src": "2129:12:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3765,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2129:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3768,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3820,
                        "src": "2151:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3767,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2151:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3770,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3820,
                        "src": "2171:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3769,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2171:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2119:71:9"
                  },
                  "returnParameters": {
                    "id": 3772,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2199:0:9"
                  },
                  "scope": 3989,
                  "src": "2101:407:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 3838,
                    "nodeType": "Block",
                    "src": "2587:74:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3830,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2606:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2606:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3832,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3822,
                              "src": "2618:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3833,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3824,
                              "src": "2627:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3829,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3764,
                            "src": "2597:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2597:36:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3835,
                        "nodeType": "ExpressionStatement",
                        "src": "2597:36:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 3836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2650:4:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 3828,
                        "id": 3837,
                        "nodeType": "Return",
                        "src": "2643:11:9"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "095ea7b3",
                  "id": 3839,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3825,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3822,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3839,
                        "src": "2531:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3821,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2531:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3824,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3839,
                        "src": "2548:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3823,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2548:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2530:32:9"
                  },
                  "returnParameters": {
                    "id": 3828,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3827,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3839,
                        "src": "2581:4:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3826,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2581:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2580:6:9"
                  },
                  "scope": 3989,
                  "src": "2514:147:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 3857,
                    "nodeType": "Block",
                    "src": "2736:70:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3849,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2756:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3850,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2756:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3851,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3841,
                              "src": "2768:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3852,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3843,
                              "src": "2772:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3848,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3820,
                            "src": "2746:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2746:32:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3854,
                        "nodeType": "ExpressionStatement",
                        "src": "2746:32:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 3855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2795:4:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 3847,
                        "id": 3856,
                        "nodeType": "Return",
                        "src": "2788:11:9"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "a9059cbb",
                  "id": 3858,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3844,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3841,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3858,
                        "src": "2685:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3840,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2685:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3843,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3858,
                        "src": "2697:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3842,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2697:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2684:27:9"
                  },
                  "returnParameters": {
                    "id": 3847,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3846,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3858,
                        "src": "2730:4:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3845,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2730:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2729:6:9"
                  },
                  "scope": 3989,
                  "src": "2667:139:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 3908,
                    "nodeType": "Block",
                    "src": "2929:244:9",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3869,
                                "name": "allowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3601,
                                "src": "2943:9:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 3871,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 3870,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3860,
                                "src": "2953:4:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2943:15:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3874,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3872,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2959:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3873,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2959:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2943:27:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3878,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "2982:2:9",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 3877,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2983:1:9",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 3876,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2974:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 3875,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2974:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3879,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2974:11:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2943:42:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 3899,
                        "nodeType": "IfStatement",
                        "src": "2939:171:9",
                        "trueBody": {
                          "id": 3898,
                          "nodeType": "Block",
                          "src": "2987:123:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 3896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3881,
                                      "name": "allowance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3601,
                                      "src": "3001:9:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3885,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 3882,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3860,
                                      "src": "3011:4:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3001:15:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3886,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3883,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "3017:3:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 3884,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3017:10:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3001:27:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3894,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3864,
                                      "src": "3080:5:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 3887,
                                          "name": "allowance",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3601,
                                          "src": "3031:9:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                            "typeString": "mapping(address => mapping(address => uint256))"
                                          }
                                        },
                                        "id": 3889,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 3888,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3860,
                                          "src": "3041:4:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3031:15:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 3892,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3890,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -15,
                                          "src": "3047:3:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 3891,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "3047:10:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3031:27:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3893,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3522,
                                    "src": "3031:31:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 3895,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3031:68:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3001:98:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3897,
                              "nodeType": "ExpressionStatement",
                              "src": "3001:98:9"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3901,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3860,
                              "src": "3129:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3902,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3862,
                              "src": "3135:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3903,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3864,
                              "src": "3139:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3900,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3820,
                            "src": "3119:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3119:26:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3905,
                        "nodeType": "ExpressionStatement",
                        "src": "3119:26:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 3906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3162:4:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 3868,
                        "id": 3907,
                        "nodeType": "Return",
                        "src": "3155:11:9"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "23b872dd",
                  "id": 3909,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3865,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3860,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3909,
                        "src": "2843:12:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3859,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2843:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3862,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3909,
                        "src": "2865:10:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3861,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2865:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3864,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3909,
                        "src": "2885:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3863,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2885:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2833:71:9"
                  },
                  "returnParameters": {
                    "id": 3868,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3867,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3909,
                        "src": "2923:4:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3866,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2923:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2922:6:9"
                  },
                  "scope": 3989,
                  "src": "2812:361:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 3987,
                    "nodeType": "Block",
                    "src": "3362:763:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3930,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3927,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3917,
                                "src": "3380:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3928,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "3392:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 3929,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3392:15:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3380:27:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45585049524544",
                              "id": 3931,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3409:9:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a",
                                "typeString": "literal_string \"EXPIRED\""
                              },
                              "value": "EXPIRED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a",
                                "typeString": "literal_string \"EXPIRED\""
                              }
                            ],
                            "id": 3926,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3372:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3372:47:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3933,
                        "nodeType": "ExpressionStatement",
                        "src": "3372:47:9"
                      },
                      {
                        "assignments": [
                          3935
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3935,
                            "mutability": "mutable",
                            "name": "digest",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3987,
                            "src": "3429:14:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3934,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3429:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3957,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "1901",
                                  "id": 3939,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3503:10:9",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3940,
                                  "name": "DOMAIN_SEPARATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3603,
                                  "src": "3531:16:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 3944,
                                          "name": "PERMIT_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3606,
                                          "src": "3632:15:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3945,
                                          "name": "owner",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3911,
                                          "src": "3673:5:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3946,
                                          "name": "spender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3913,
                                          "src": "3704:7:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3947,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3915,
                                          "src": "3737:5:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3951,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "UnaryOperation",
                                          "operator": "++",
                                          "prefix": false,
                                          "src": "3768:15:9",
                                          "subExpression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 3948,
                                              "name": "nonces",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3610,
                                              "src": "3768:6:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                "typeString": "mapping(address => uint256)"
                                              }
                                            },
                                            "id": 3950,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 3949,
                                              "name": "owner",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3911,
                                              "src": "3775:5:9",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "3768:13:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3952,
                                          "name": "deadline",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3917,
                                          "src": "3809:8:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3942,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "3596:3:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 3943,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "3596:10:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 3953,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3596:243:9",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 3941,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "3565:9:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 3954,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3565:292:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3937,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3469:3:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 3938,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3469:16:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 3955,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3469:402:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3936,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "3446:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 3956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3446:435:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3429:452:9"
                      },
                      {
                        "assignments": [
                          3959
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3959,
                            "mutability": "mutable",
                            "name": "recoveredAddress",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3987,
                            "src": "3891:24:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 3958,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3891:7:9",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3966,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3961,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3935,
                              "src": "3928:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3962,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3919,
                              "src": "3936:1:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3963,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3921,
                              "src": "3939:1:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3964,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3923,
                              "src": "3942:1:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 3960,
                            "name": "ecrecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -6,
                            "src": "3918:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                            }
                          },
                          "id": 3965,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3918:26:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3891:53:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 3977,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 3973,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3968,
                                  "name": "recoveredAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3959,
                                  "src": "3975:16:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 3971,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4003:1:9",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 3970,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3995:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 3969,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3995:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 3972,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3995:10:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "3975:30:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 3976,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3974,
                                  "name": "recoveredAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3959,
                                  "src": "4009:16:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 3975,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3911,
                                  "src": "4029:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4009:25:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3975:59:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f5349474e4154555245",
                              "id": 3978,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4048:19:9",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88",
                                "typeString": "literal_string \"INVALID_SIGNATURE\""
                              },
                              "value": "INVALID_SIGNATURE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88",
                                "typeString": "literal_string \"INVALID_SIGNATURE\""
                              }
                            ],
                            "id": 3967,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3954:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3979,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3954:123:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3980,
                        "nodeType": "ExpressionStatement",
                        "src": "3954:123:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3982,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3911,
                              "src": "4096:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3983,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3913,
                              "src": "4103:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3984,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3915,
                              "src": "4112:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3981,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3764,
                            "src": "4087:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3985,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4087:31:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3986,
                        "nodeType": "ExpressionStatement",
                        "src": "4087:31:9"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d505accf",
                  "id": 3988,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 3924,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3911,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3988,
                        "src": "3204:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3910,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3204:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3913,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3988,
                        "src": "3227:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3912,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3227:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3915,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3988,
                        "src": "3252:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3914,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3252:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3917,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3988,
                        "src": "3275:16:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3916,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3275:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3919,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3988,
                        "src": "3301:7:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 3918,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "3301:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3921,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3988,
                        "src": "3318:9:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3920,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3318:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3923,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 3988,
                        "src": "3337:9:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3922,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3337:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3194:158:9"
                  },
                  "returnParameters": {
                    "id": 3925,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3362:0:9"
                  },
                  "scope": 3989,
                  "src": "3179:946:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3990,
              "src": "62:4065:9"
            }
          ],
          "src": "0:4128:9"
        },
        "id": 9
      },
      "contracts/pegasys-periphery/test/ERC20.sol": {
        "ast": {
          "absolutePath": "contracts/pegasys-periphery/test/ERC20.sol",
          "exportedSymbols": {
            "ERC20": [
              4386
            ]
          },
          "id": 4387,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3991,
              "literals": [
                "solidity",
                "=",
                "0.6",
                ".6"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:10"
            },
            {
              "absolutePath": "contracts/pegasys-periphery/libraries/SafeMath.sol",
              "file": "../libraries/SafeMath.sol",
              "id": 3992,
              "nodeType": "ImportDirective",
              "scope": 4387,
              "sourceUnit": 3575,
              "src": "25:35:10",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 4386,
              "linearizedBaseContracts": [
                4386
              ],
              "name": "ERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 3995,
                  "libraryName": {
                    "contractScope": null,
                    "id": 3993,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3574,
                    "src": "89:8:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$3574",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "83:27:10",
                  "typeName": {
                    "id": 3994,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "102:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": true,
                  "functionSelector": "06fdde03",
                  "id": 3998,
                  "mutability": "constant",
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4386,
                  "src": "116:42:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3996,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "116:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "5465737420546f6b656e",
                    "id": 3997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "146:12:10",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_81e8ad438398ab0d4a2a7ecb159490c091bb27c67ace5181f70084e30fadaea2",
                      "typeString": "literal_string \"Test Token\""
                    },
                    "value": "Test Token"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "95d89b41",
                  "id": 4001,
                  "mutability": "constant",
                  "name": "symbol",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4386,
                  "src": "164:36:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3999,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "164:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "5454",
                    "id": 4000,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "196:4:10",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_2ac50a34f0da9360cfd7e529a34ccdaa61aa98e2a0ac0928bf981af8e73352ba",
                      "typeString": "literal_string \"TT\""
                    },
                    "value": "TT"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "313ce567",
                  "id": 4004,
                  "mutability": "constant",
                  "name": "decimals",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4386,
                  "src": "206:35:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 4002,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "206:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "3138",
                    "id": 4003,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "239:2:10",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_18_by_1",
                      "typeString": "int_const 18"
                    },
                    "value": "18"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "18160ddd",
                  "id": 4006,
                  "mutability": "mutable",
                  "name": "totalSupply",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4386,
                  "src": "247:26:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4005,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "247:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "70a08231",
                  "id": 4010,
                  "mutability": "mutable",
                  "name": "balanceOf",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4386,
                  "src": "279:44:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 4009,
                    "keyType": {
                      "id": 4007,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "287:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "279:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 4008,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "298:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "dd62ed3e",
                  "id": 4016,
                  "mutability": "mutable",
                  "name": "allowance",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4386,
                  "src": "329:64:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 4015,
                    "keyType": {
                      "id": 4011,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "337:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "329:47:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 4014,
                      "keyType": {
                        "id": 4012,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "356:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "348:27:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 4013,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "367:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "3644e515",
                  "id": 4018,
                  "mutability": "mutable",
                  "name": "DOMAIN_SEPARATOR",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4386,
                  "src": "400:31:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4017,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "400:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "30adf81f",
                  "id": 4021,
                  "mutability": "constant",
                  "name": "PERMIT_TYPEHASH",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4386,
                  "src": "541:116:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4019,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "541:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "307836653731656461653132623162393766346431663630333730666566313031303566613266616165303132363131346131363963363438343564363132366339",
                    "id": 4020,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "591:66:10",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_49955707469362902507454157297736832118868343942642399513960811609542965143241_by_1",
                      "typeString": "int_const 4995...(69 digits omitted)...3241"
                    },
                    "value": "0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "7ecebe00",
                  "id": 4025,
                  "mutability": "mutable",
                  "name": "nonces",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4386,
                  "src": "663:41:10",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 4024,
                    "keyType": {
                      "id": 4022,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "671:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "663:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 4023,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "682:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 4033,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4032,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4027,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4033,
                        "src": "735:21:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4026,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "735:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4029,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4033,
                        "src": "766:23:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4028,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "766:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4031,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4033,
                        "src": "799:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4030,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "799:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "725:93:10"
                  },
                  "src": "711:108:10"
                },
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 4041,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4040,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4035,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4041,
                        "src": "839:20:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4034,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "839:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4037,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4041,
                        "src": "861:18:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4036,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "861:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4039,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4041,
                        "src": "881:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4038,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "881:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "838:57:10"
                  },
                  "src": "824:72:10"
                },
                {
                  "body": {
                    "id": 4084,
                    "nodeType": "Block",
                    "src": "943:507:10",
                    "statements": [
                      {
                        "assignments": [
                          4047
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4047,
                            "mutability": "mutable",
                            "name": "chainId",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4084,
                            "src": "953:15:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4046,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "953:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4048,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "953:15:10"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "987:44:10",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1001:20:10",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "chainid",
                                  "nodeType": "YulIdentifier",
                                  "src": "1012:7:10"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1012:9:10"
                              },
                              "variableNames": [
                                {
                                  "name": "chainId",
                                  "nodeType": "YulIdentifier",
                                  "src": "1001:7:10"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 4047,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1001:7:10",
                            "valueSize": 1
                          }
                        ],
                        "id": 4049,
                        "nodeType": "InlineAssembly",
                        "src": "978:53:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4050,
                            "name": "DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4018,
                            "src": "1040:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                                        "id": 4055,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1141:84:10",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                          "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                        },
                                        "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                          "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                        }
                                      ],
                                      "id": 4054,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "1110:9:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 4056,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1110:133:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 4060,
                                            "name": "name",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3998,
                                            "src": "1277:4:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          ],
                                          "id": 4059,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1271:5:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": {
                                            "id": 4058,
                                            "name": "bytes",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1271:5:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 4061,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1271:11:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 4057,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "1261:9:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 4062,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1261:22:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 4066,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1317:3:10",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                              "typeString": "literal_string \"1\""
                                            },
                                            "value": "1"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                              "typeString": "literal_string \"1\""
                                            }
                                          ],
                                          "id": 4065,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1311:5:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": {
                                            "id": 4064,
                                            "name": "bytes",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1311:5:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 4067,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1311:10:10",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 4063,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "1301:9:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 4068,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1301:21:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4069,
                                    "name": "chainId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4047,
                                    "src": "1340:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 4072,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "1373:4:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ERC20_$4386",
                                          "typeString": "contract ERC20"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_ERC20_$4386",
                                          "typeString": "contract ERC20"
                                        }
                                      ],
                                      "id": 4071,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1365:7:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 4070,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1365:7:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 4073,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1365:13:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4052,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "1082:3:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 4053,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1082:10:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 4074,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1082:310:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 4051,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "1059:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 4075,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1059:343:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "1040:362:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 4077,
                        "nodeType": "ExpressionStatement",
                        "src": "1040:362:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4079,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1418:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4080,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1418:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4081,
                              "name": "_totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4043,
                              "src": "1430:12:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4078,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4120,
                            "src": "1412:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 4082,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1412:31:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4083,
                        "nodeType": "ExpressionStatement",
                        "src": "1412:31:10"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 4085,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4044,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4043,
                        "mutability": "mutable",
                        "name": "_totalSupply",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4085,
                        "src": "914:20:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4042,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "914:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "913:22:10"
                  },
                  "returnParameters": {
                    "id": 4045,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "943:0:10"
                  },
                  "scope": 4386,
                  "src": "902:548:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4119,
                    "nodeType": "Block",
                    "src": "1507:149:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4097,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4092,
                            "name": "totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4006,
                            "src": "1517:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4095,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4089,
                                "src": "1547:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4093,
                                "name": "totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4006,
                                "src": "1531:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4094,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3500,
                              "src": "1531:15:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4096,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1531:22:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1517:36:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4098,
                        "nodeType": "ExpressionStatement",
                        "src": "1517:36:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4099,
                              "name": "balanceOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4010,
                              "src": "1563:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 4101,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4100,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4087,
                              "src": "1573:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1563:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4106,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4089,
                                "src": "1597:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4102,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4010,
                                  "src": "1579:9:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 4104,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 4103,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4087,
                                  "src": "1589:2:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1579:13:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4105,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3500,
                              "src": "1579:17:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4107,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1579:24:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1563:40:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4109,
                        "nodeType": "ExpressionStatement",
                        "src": "1563:40:10"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4113,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1635:1:10",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 4112,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1627:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4111,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1627:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 4114,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1627:10:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4115,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4087,
                              "src": "1639:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4116,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4089,
                              "src": "1643:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4110,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4041,
                            "src": "1618:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 4117,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1618:31:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4118,
                        "nodeType": "EmitStatement",
                        "src": "1613:36:10"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 4120,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4090,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4087,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4120,
                        "src": "1471:10:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4086,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1471:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4089,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4120,
                        "src": "1483:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4088,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1483:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1470:27:10"
                  },
                  "returnParameters": {
                    "id": 4091,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1507:0:10"
                  },
                  "scope": 4386,
                  "src": "1456:200:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4154,
                    "nodeType": "Block",
                    "src": "1715:155:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4127,
                              "name": "balanceOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4010,
                              "src": "1725:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 4129,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4128,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4122,
                              "src": "1735:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1725:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4134,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4124,
                                "src": "1763:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4130,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4010,
                                  "src": "1743:9:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 4132,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 4131,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4122,
                                  "src": "1753:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1743:15:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4133,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3522,
                              "src": "1743:19:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4135,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1743:26:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1725:44:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4137,
                        "nodeType": "ExpressionStatement",
                        "src": "1725:44:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4138,
                            "name": "totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4006,
                            "src": "1779:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4141,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4124,
                                "src": "1809:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4139,
                                "name": "totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4006,
                                "src": "1793:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4140,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3522,
                              "src": "1793:15:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4142,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1793:22:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1779:36:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4144,
                        "nodeType": "ExpressionStatement",
                        "src": "1779:36:10"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4146,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4122,
                              "src": "1839:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4149,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1853:1:10",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 4148,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1845:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4147,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1845:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 4150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1845:10:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4151,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4124,
                              "src": "1857:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4145,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4041,
                            "src": "1830:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 4152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1830:33:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4153,
                        "nodeType": "EmitStatement",
                        "src": "1825:38:10"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 4155,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4125,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4122,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4155,
                        "src": "1677:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4121,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1677:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4124,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4155,
                        "src": "1691:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4123,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1691:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1676:29:10"
                  },
                  "returnParameters": {
                    "id": 4126,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1715:0:10"
                  },
                  "scope": 4386,
                  "src": "1662:208:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4178,
                    "nodeType": "Block",
                    "src": "1979:96:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4164,
                                "name": "allowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4016,
                                "src": "1989:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 4167,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4165,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4157,
                                "src": "1999:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1989:16:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 4168,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4166,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4159,
                              "src": "2006:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1989:25:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4169,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4161,
                            "src": "2017:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1989:33:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4171,
                        "nodeType": "ExpressionStatement",
                        "src": "1989:33:10"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4173,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4157,
                              "src": "2046:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4174,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4159,
                              "src": "2053:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4175,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4161,
                              "src": "2062:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4172,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4033,
                            "src": "2037:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 4176,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2037:31:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4177,
                        "nodeType": "EmitStatement",
                        "src": "2032:36:10"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 4179,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4162,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4157,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4179,
                        "src": "1903:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4156,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1903:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4159,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4179,
                        "src": "1926:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4158,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1926:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4161,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4179,
                        "src": "1951:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4160,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1951:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1893:77:10"
                  },
                  "returnParameters": {
                    "id": 4163,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1979:0:10"
                  },
                  "scope": 4386,
                  "src": "1876:199:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 4216,
                    "nodeType": "Block",
                    "src": "2179:151:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4188,
                              "name": "balanceOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4010,
                              "src": "2189:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 4190,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4189,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4181,
                              "src": "2199:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2189:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4195,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4185,
                                "src": "2227:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4191,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4010,
                                  "src": "2207:9:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 4193,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 4192,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4181,
                                  "src": "2217:4:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2207:15:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4194,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3522,
                              "src": "2207:19:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4196,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2207:26:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2189:44:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4198,
                        "nodeType": "ExpressionStatement",
                        "src": "2189:44:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4199,
                              "name": "balanceOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4010,
                              "src": "2243:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 4201,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 4200,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4183,
                              "src": "2253:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2243:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4206,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4185,
                                "src": "2277:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4202,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4010,
                                  "src": "2259:9:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 4204,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 4203,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4183,
                                  "src": "2269:2:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2259:13:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4205,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3500,
                              "src": "2259:17:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2259:24:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2243:40:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4209,
                        "nodeType": "ExpressionStatement",
                        "src": "2243:40:10"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4211,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4181,
                              "src": "2307:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4212,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4183,
                              "src": "2313:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4213,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4185,
                              "src": "2317:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4210,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4041,
                            "src": "2298:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 4214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2298:25:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4215,
                        "nodeType": "EmitStatement",
                        "src": "2293:30:10"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 4217,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4186,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4181,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4217,
                        "src": "2109:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4180,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2109:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4183,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4217,
                        "src": "2131:10:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4182,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2131:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4185,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4217,
                        "src": "2151:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4184,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2151:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2099:71:10"
                  },
                  "returnParameters": {
                    "id": 4187,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2179:0:10"
                  },
                  "scope": 4386,
                  "src": "2081:249:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 4235,
                    "nodeType": "Block",
                    "src": "2409:74:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4227,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2428:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4228,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2428:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4229,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4219,
                              "src": "2440:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4230,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4221,
                              "src": "2449:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4226,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4179,
                            "src": "2419:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 4231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2419:36:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4232,
                        "nodeType": "ExpressionStatement",
                        "src": "2419:36:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 4233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2472:4:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 4225,
                        "id": 4234,
                        "nodeType": "Return",
                        "src": "2465:11:10"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "095ea7b3",
                  "id": 4236,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4222,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4219,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4236,
                        "src": "2353:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4218,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2353:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4221,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4236,
                        "src": "2370:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4220,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2370:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2352:32:10"
                  },
                  "returnParameters": {
                    "id": 4225,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4224,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4236,
                        "src": "2403:4:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4223,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2403:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2402:6:10"
                  },
                  "scope": 4386,
                  "src": "2336:147:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4254,
                    "nodeType": "Block",
                    "src": "2558:70:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4246,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2578:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4247,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2578:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4248,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4238,
                              "src": "2590:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4249,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4240,
                              "src": "2594:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4245,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4217,
                            "src": "2568:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 4250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2568:32:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4251,
                        "nodeType": "ExpressionStatement",
                        "src": "2568:32:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 4252,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2617:4:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 4244,
                        "id": 4253,
                        "nodeType": "Return",
                        "src": "2610:11:10"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "a9059cbb",
                  "id": 4255,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4241,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4238,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4255,
                        "src": "2507:10:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4237,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2507:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4240,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4255,
                        "src": "2519:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4239,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2519:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2506:27:10"
                  },
                  "returnParameters": {
                    "id": 4244,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4243,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4255,
                        "src": "2552:4:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4242,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2552:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2551:6:10"
                  },
                  "scope": 4386,
                  "src": "2489:139:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4305,
                    "nodeType": "Block",
                    "src": "2751:244:10",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4277,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4266,
                                "name": "allowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4016,
                                "src": "2765:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 4268,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4267,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4257,
                                "src": "2775:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2765:15:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 4271,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4269,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2781:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4270,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2781:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2765:27:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4275,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "2804:2:10",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 4274,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2805:1:10",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 4273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2796:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 4272,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2796:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 4276,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2796:11:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2765:42:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4296,
                        "nodeType": "IfStatement",
                        "src": "2761:171:10",
                        "trueBody": {
                          "id": 4295,
                          "nodeType": "Block",
                          "src": "2809:123:10",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4293,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 4278,
                                      "name": "allowance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4016,
                                      "src": "2823:9:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 4282,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 4279,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4257,
                                      "src": "2833:4:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2823:15:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 4283,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4280,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "2839:3:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 4281,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "2839:10:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2823:27:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 4291,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4261,
                                      "src": "2902:5:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "id": 4284,
                                          "name": "allowance",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4016,
                                          "src": "2853:9:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                            "typeString": "mapping(address => mapping(address => uint256))"
                                          }
                                        },
                                        "id": 4286,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 4285,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4257,
                                          "src": "2863:4:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "2853:15:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                          "typeString": "mapping(address => uint256)"
                                        }
                                      },
                                      "id": 4289,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 4287,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -15,
                                          "src": "2869:3:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 4288,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "2869:10:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2853:27:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4290,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3522,
                                    "src": "2853:31:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 4292,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2853:68:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2823:98:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4294,
                              "nodeType": "ExpressionStatement",
                              "src": "2823:98:10"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4298,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4257,
                              "src": "2951:4:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4299,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4259,
                              "src": "2957:2:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4300,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4261,
                              "src": "2961:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4297,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4217,
                            "src": "2941:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 4301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2941:26:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4302,
                        "nodeType": "ExpressionStatement",
                        "src": "2941:26:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 4303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2984:4:10",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 4265,
                        "id": 4304,
                        "nodeType": "Return",
                        "src": "2977:11:10"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "23b872dd",
                  "id": 4306,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4262,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4257,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4306,
                        "src": "2665:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4256,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2665:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4259,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4306,
                        "src": "2687:10:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4258,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2687:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4261,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4306,
                        "src": "2707:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4260,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2707:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2655:71:10"
                  },
                  "returnParameters": {
                    "id": 4265,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4264,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4306,
                        "src": "2745:4:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4263,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2745:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2744:6:10"
                  },
                  "scope": 4386,
                  "src": "2634:361:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4384,
                    "nodeType": "Block",
                    "src": "3184:763:10",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 4324,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4314,
                                "src": "3202:8:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4325,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "3214:5:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 4326,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3214:15:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3202:27:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "45585049524544",
                              "id": 4328,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3231:9:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a",
                                "typeString": "literal_string \"EXPIRED\""
                              },
                              "value": "EXPIRED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a",
                                "typeString": "literal_string \"EXPIRED\""
                              }
                            ],
                            "id": 4323,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3194:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3194:47:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4330,
                        "nodeType": "ExpressionStatement",
                        "src": "3194:47:10"
                      },
                      {
                        "assignments": [
                          4332
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4332,
                            "mutability": "mutable",
                            "name": "digest",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4384,
                            "src": "3251:14:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 4331,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3251:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4354,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "1901",
                                  "id": 4336,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3325:10:10",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4337,
                                  "name": "DOMAIN_SEPARATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4018,
                                  "src": "3353:16:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 4341,
                                          "name": "PERMIT_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4021,
                                          "src": "3454:15:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 4342,
                                          "name": "owner",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4308,
                                          "src": "3495:5:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 4343,
                                          "name": "spender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4310,
                                          "src": "3526:7:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 4344,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4312,
                                          "src": "3559:5:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 4348,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "UnaryOperation",
                                          "operator": "++",
                                          "prefix": false,
                                          "src": "3590:15:10",
                                          "subExpression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 4345,
                                              "name": "nonces",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4025,
                                              "src": "3590:6:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                "typeString": "mapping(address => uint256)"
                                              }
                                            },
                                            "id": 4347,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 4346,
                                              "name": "owner",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4308,
                                              "src": "3597:5:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "3590:13:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 4349,
                                          "name": "deadline",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4314,
                                          "src": "3631:8:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 4339,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "3418:3:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 4340,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "3418:10:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 4350,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3418:243:10",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 4338,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "3387:9:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 4351,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3387:292:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string \"\u0019\u0001\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4334,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3291:3:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4335,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3291:16:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 4352,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3291:402:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4333,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "3268:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 4353,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3268:435:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3251:452:10"
                      },
                      {
                        "assignments": [
                          4356
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4356,
                            "mutability": "mutable",
                            "name": "recoveredAddress",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4384,
                            "src": "3713:24:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4355,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3713:7:10",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4363,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4358,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4332,
                              "src": "3750:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4359,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4316,
                              "src": "3758:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4360,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4318,
                              "src": "3761:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4361,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4320,
                              "src": "3764:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 4357,
                            "name": "ecrecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -6,
                            "src": "3740:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                            }
                          },
                          "id": 4362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3740:26:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3713:53:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 4374,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 4370,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 4365,
                                  "name": "recoveredAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4356,
                                  "src": "3797:16:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 4368,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3825:1:10",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 4367,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3817:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 4366,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3817:7:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 4369,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3817:10:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "3797:30:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 4373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 4371,
                                  "name": "recoveredAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4356,
                                  "src": "3831:16:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 4372,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4308,
                                  "src": "3851:5:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3831:25:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3797:59:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "494e56414c49445f5349474e4154555245",
                              "id": 4375,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3870:19:10",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88",
                                "typeString": "literal_string \"INVALID_SIGNATURE\""
                              },
                              "value": "INVALID_SIGNATURE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88",
                                "typeString": "literal_string \"INVALID_SIGNATURE\""
                              }
                            ],
                            "id": 4364,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3776:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3776:123:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4377,
                        "nodeType": "ExpressionStatement",
                        "src": "3776:123:10"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4379,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4308,
                              "src": "3918:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4380,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4310,
                              "src": "3925:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4381,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4312,
                              "src": "3934:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4378,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4179,
                            "src": "3909:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 4382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3909:31:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4383,
                        "nodeType": "ExpressionStatement",
                        "src": "3909:31:10"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d505accf",
                  "id": 4385,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permit",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4321,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4308,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4385,
                        "src": "3026:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4307,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3026:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4310,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4385,
                        "src": "3049:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4309,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3049:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4312,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4385,
                        "src": "3074:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4311,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3074:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4314,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4385,
                        "src": "3097:16:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4313,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3097:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4316,
                        "mutability": "mutable",
                        "name": "v",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4385,
                        "src": "3123:7:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 4315,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "3123:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4318,
                        "mutability": "mutable",
                        "name": "r",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4385,
                        "src": "3140:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4317,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3140:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4320,
                        "mutability": "mutable",
                        "name": "s",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4385,
                        "src": "3159:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4319,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3159:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3016:158:10"
                  },
                  "returnParameters": {
                    "id": 4322,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3184:0:10"
                  },
                  "scope": 4386,
                  "src": "3001:946:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4387,
              "src": "62:3887:10"
            }
          ],
          "src": "0:3950:10"
        },
        "id": 10
      },
      "contracts/pegasys-periphery/test/RouterEventEmitter.sol": {
        "ast": {
          "absolutePath": "contracts/pegasys-periphery/test/RouterEventEmitter.sol",
          "exportedSymbols": {
            "RouterEventEmitter": [
              4711
            ]
          },
          "id": 4712,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4388,
              "literals": [
                "solidity",
                "=",
                "0.6",
                ".6"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:11"
            },
            {
              "absolutePath": "contracts/pegasys-periphery/interfaces/IPegasysRouter.sol",
              "file": "../interfaces/IPegasysRouter.sol",
              "id": 4389,
              "nodeType": "ImportDirective",
              "scope": 4712,
              "sourceUnit": 2977,
              "src": "25:42:11",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 4711,
              "linearizedBaseContracts": [
                4711
              ],
              "name": "RouterEventEmitter",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": null,
                  "id": 4394,
                  "name": "Amounts",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4393,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4392,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4394,
                        "src": "117:17:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4390,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "117:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4391,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "117:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "116:19:11"
                  },
                  "src": "103:33:11"
                },
                {
                  "body": {
                    "id": 4397,
                    "nodeType": "Block",
                    "src": "169:2:11",
                    "statements": []
                  },
                  "documentation": null,
                  "id": 4398,
                  "implemented": true,
                  "kind": "receive",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4395,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "149:2:11"
                  },
                  "returnParameters": {
                    "id": 4396,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "169:0:11"
                  },
                  "scope": 4711,
                  "src": "142:29:11",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4450,
                    "nodeType": "Block",
                    "src": "385:420:11",
                    "statements": [
                      {
                        "assignments": [
                          4415,
                          4417
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4415,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4450,
                            "src": "396:12:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4414,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "396:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 4417,
                            "mutability": "mutable",
                            "name": "returnData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4450,
                            "src": "410:23:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4416,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "410:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4434,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 4423,
                                          "name": "router",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4400,
                                          "src": "525:6:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 4422,
                                        "name": "IPegasysRouter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2976,
                                        "src": "510:14:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IPegasysRouter_$2976_$",
                                          "typeString": "type(contract IPegasysRouter)"
                                        }
                                      },
                                      "id": 4424,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "510:22:11",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPegasysRouter_$2976",
                                        "typeString": "contract IPegasysRouter"
                                      }
                                    },
                                    "id": 4425,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "swapExactTokensForTokens",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2757,
                                    "src": "510:47:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"
                                    }
                                  },
                                  "id": 4426,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "510:56:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4427,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4402,
                                  "src": "584:8:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4428,
                                  "name": "amountOutMin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4404,
                                  "src": "610:12:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4429,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4407,
                                  "src": "640:4:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4430,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4409,
                                  "src": "662:2:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4431,
                                  "name": "deadline",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4411,
                                  "src": "682:8:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4420,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "470:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "470:22:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 4432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "470:234:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4418,
                              "name": "router",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4400,
                              "src": "437:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 4419,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "delegatecall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "437:19:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) returns (bool,bytes memory)"
                            }
                          },
                          "id": 4433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "437:277:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "395:319:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4436,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4415,
                              "src": "731:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4435,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "724:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4437,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "724:15:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4438,
                        "nodeType": "ExpressionStatement",
                        "src": "724:15:11"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4442,
                                  "name": "returnData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4417,
                                  "src": "773:10:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 4444,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "786:7:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 4443,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "786:7:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 4445,
                                      "indexExpression": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "786:9:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                        "typeString": "type(uint256[] memory)"
                                      }
                                    }
                                  ],
                                  "id": 4446,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "785:11:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "type(uint256[] memory)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "type(uint256[] memory)"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4440,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "762:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4441,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "decode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "762:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4447,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "762:35:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 4439,
                            "name": "Amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4394,
                            "src": "754:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (uint256[] memory)"
                            }
                          },
                          "id": 4448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "754:44:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4449,
                        "nodeType": "EmitStatement",
                        "src": "749:49:11"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "375734d9",
                  "id": 4451,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapExactTokensForTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4412,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4400,
                        "mutability": "mutable",
                        "name": "router",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4451,
                        "src": "220:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4399,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "220:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4402,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4451,
                        "src": "244:16:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4401,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "244:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4404,
                        "mutability": "mutable",
                        "name": "amountOutMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4451,
                        "src": "270:20:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4403,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "270:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4407,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4451,
                        "src": "300:23:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4405,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "300:7:11",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 4406,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "300:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4409,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4451,
                        "src": "333:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4408,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "333:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4411,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4451,
                        "src": "353:16:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4410,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "353:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "210:165:11"
                  },
                  "returnParameters": {
                    "id": 4413,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "385:0:11"
                  },
                  "scope": 4711,
                  "src": "177:628:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4503,
                    "nodeType": "Block",
                    "src": "1019:420:11",
                    "statements": [
                      {
                        "assignments": [
                          4468,
                          4470
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4468,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4503,
                            "src": "1030:12:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4467,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1030:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 4470,
                            "mutability": "mutable",
                            "name": "returnData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4503,
                            "src": "1044:23:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4469,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1044:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4487,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 4476,
                                          "name": "router",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4453,
                                          "src": "1159:6:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 4475,
                                        "name": "IPegasysRouter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2976,
                                        "src": "1144:14:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IPegasysRouter_$2976_$",
                                          "typeString": "type(contract IPegasysRouter)"
                                        }
                                      },
                                      "id": 4477,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1144:22:11",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPegasysRouter_$2976",
                                        "typeString": "contract IPegasysRouter"
                                      }
                                    },
                                    "id": 4478,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "swapTokensForExactTokens",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2774,
                                    "src": "1144:47:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"
                                    }
                                  },
                                  "id": 4479,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1144:56:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4480,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4455,
                                  "src": "1218:9:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4481,
                                  "name": "amountInMax",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4457,
                                  "src": "1245:11:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4482,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4460,
                                  "src": "1274:4:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4483,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4462,
                                  "src": "1296:2:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4484,
                                  "name": "deadline",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4464,
                                  "src": "1316:8:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4473,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1104:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4474,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1104:22:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 4485,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1104:234:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4471,
                              "name": "router",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4453,
                              "src": "1071:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 4472,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "delegatecall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1071:19:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) returns (bool,bytes memory)"
                            }
                          },
                          "id": 4486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1071:277:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1029:319:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4489,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4468,
                              "src": "1365:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4488,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "1358:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1358:15:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4491,
                        "nodeType": "ExpressionStatement",
                        "src": "1358:15:11"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4495,
                                  "name": "returnData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4470,
                                  "src": "1407:10:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 4497,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1420:7:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 4496,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1420:7:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 4498,
                                      "indexExpression": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1420:9:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                        "typeString": "type(uint256[] memory)"
                                      }
                                    }
                                  ],
                                  "id": 4499,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1419:11:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "type(uint256[] memory)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "type(uint256[] memory)"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4493,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1396:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4494,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "decode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1396:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4500,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1396:35:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 4492,
                            "name": "Amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4394,
                            "src": "1388:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (uint256[] memory)"
                            }
                          },
                          "id": 4501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1388:44:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4502,
                        "nodeType": "EmitStatement",
                        "src": "1383:49:11"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "22b58410",
                  "id": 4504,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapTokensForExactTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4465,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4453,
                        "mutability": "mutable",
                        "name": "router",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4504,
                        "src": "854:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4452,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "854:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4455,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4504,
                        "src": "878:17:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4454,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "878:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4457,
                        "mutability": "mutable",
                        "name": "amountInMax",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4504,
                        "src": "905:19:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4456,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "905:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4460,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4504,
                        "src": "934:23:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4458,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "934:7:11",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 4459,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "934:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4462,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4504,
                        "src": "967:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4461,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "967:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4464,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4504,
                        "src": "987:16:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4463,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "987:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "844:165:11"
                  },
                  "returnParameters": {
                    "id": 4466,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1019:0:11"
                  },
                  "scope": 4711,
                  "src": "811:628:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4553,
                    "nodeType": "Block",
                    "src": "1632:391:11",
                    "statements": [
                      {
                        "assignments": [
                          4519,
                          4521
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4519,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4553,
                            "src": "1643:12:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4518,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1643:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 4521,
                            "mutability": "mutable",
                            "name": "returnData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4553,
                            "src": "1657:23:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4520,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1657:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4537,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 4527,
                                          "name": "router",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4506,
                                          "src": "1772:6:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 4526,
                                        "name": "IPegasysRouter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2976,
                                        "src": "1757:14:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IPegasysRouter_$2976_$",
                                          "typeString": "type(contract IPegasysRouter)"
                                        }
                                      },
                                      "id": 4528,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1757:22:11",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPegasysRouter_$2976",
                                        "typeString": "contract IPegasysRouter"
                                      }
                                    },
                                    "id": 4529,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "swapExactSYSForTokens",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2789,
                                    "src": "1757:44:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_payable$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "function (uint256,address[] memory,address,uint256) payable external returns (uint256[] memory)"
                                    }
                                  },
                                  "id": 4530,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1757:53:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4531,
                                  "name": "amountOutMin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4508,
                                  "src": "1828:12:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4532,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4511,
                                  "src": "1858:4:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4533,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4513,
                                  "src": "1880:2:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4534,
                                  "name": "deadline",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4515,
                                  "src": "1900:8:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4524,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1717:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4525,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1717:22:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 4535,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1717:205:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4522,
                              "name": "router",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4506,
                              "src": "1684:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 4523,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "delegatecall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1684:19:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) returns (bool,bytes memory)"
                            }
                          },
                          "id": 4536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1684:248:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1642:290:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4539,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4519,
                              "src": "1949:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4538,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "1942:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4540,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1942:15:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4541,
                        "nodeType": "ExpressionStatement",
                        "src": "1942:15:11"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4545,
                                  "name": "returnData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4521,
                                  "src": "1991:10:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 4547,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "2004:7:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 4546,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2004:7:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 4548,
                                      "indexExpression": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2004:9:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                        "typeString": "type(uint256[] memory)"
                                      }
                                    }
                                  ],
                                  "id": 4549,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "2003:11:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "type(uint256[] memory)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "type(uint256[] memory)"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4543,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1980:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4544,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "decode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1980:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4550,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1980:35:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 4542,
                            "name": "Amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4394,
                            "src": "1972:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (uint256[] memory)"
                            }
                          },
                          "id": 4551,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1972:44:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4552,
                        "nodeType": "EmitStatement",
                        "src": "1967:49:11"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "3cec30a9",
                  "id": 4554,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapExactSYSForTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4516,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4506,
                        "mutability": "mutable",
                        "name": "router",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4554,
                        "src": "1485:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4505,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1485:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4508,
                        "mutability": "mutable",
                        "name": "amountOutMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4554,
                        "src": "1509:20:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4507,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1509:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4511,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4554,
                        "src": "1539:23:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4509,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1539:7:11",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 4510,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "1539:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4513,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4554,
                        "src": "1572:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4512,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1572:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4515,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4554,
                        "src": "1592:16:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4514,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1592:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1475:139:11"
                  },
                  "returnParameters": {
                    "id": 4517,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1632:0:11"
                  },
                  "scope": 4711,
                  "src": "1445:578:11",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4606,
                    "nodeType": "Block",
                    "src": "2234:417:11",
                    "statements": [
                      {
                        "assignments": [
                          4571,
                          4573
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4571,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4606,
                            "src": "2245:12:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4570,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2245:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 4573,
                            "mutability": "mutable",
                            "name": "returnData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4606,
                            "src": "2259:23:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4572,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2259:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4590,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 4579,
                                          "name": "router",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4556,
                                          "src": "2374:6:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 4578,
                                        "name": "IPegasysRouter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2976,
                                        "src": "2359:14:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IPegasysRouter_$2976_$",
                                          "typeString": "type(contract IPegasysRouter)"
                                        }
                                      },
                                      "id": 4580,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2359:22:11",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPegasysRouter_$2976",
                                        "typeString": "contract IPegasysRouter"
                                      }
                                    },
                                    "id": 4581,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "swapTokensForExactSYS",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2806,
                                    "src": "2359:44:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"
                                    }
                                  },
                                  "id": 4582,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2359:53:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4583,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4558,
                                  "src": "2430:9:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4584,
                                  "name": "amountInMax",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4560,
                                  "src": "2457:11:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4585,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4563,
                                  "src": "2486:4:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4586,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4565,
                                  "src": "2508:2:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4587,
                                  "name": "deadline",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4567,
                                  "src": "2528:8:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4576,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2319:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4577,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2319:22:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 4588,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2319:231:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4574,
                              "name": "router",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4556,
                              "src": "2286:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 4575,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "delegatecall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2286:19:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) returns (bool,bytes memory)"
                            }
                          },
                          "id": 4589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2286:274:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2244:316:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4592,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4571,
                              "src": "2577:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4591,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "2570:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2570:15:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4594,
                        "nodeType": "ExpressionStatement",
                        "src": "2570:15:11"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4598,
                                  "name": "returnData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4573,
                                  "src": "2619:10:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 4600,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "2632:7:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 4599,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2632:7:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 4601,
                                      "indexExpression": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2632:9:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                        "typeString": "type(uint256[] memory)"
                                      }
                                    }
                                  ],
                                  "id": 4602,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "2631:11:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "type(uint256[] memory)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "type(uint256[] memory)"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4596,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2608:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4597,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "decode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2608:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2608:35:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 4595,
                            "name": "Amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4394,
                            "src": "2600:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (uint256[] memory)"
                            }
                          },
                          "id": 4604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2600:44:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4605,
                        "nodeType": "EmitStatement",
                        "src": "2595:49:11"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "1e175e96",
                  "id": 4607,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapTokensForExactSYS",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4568,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4556,
                        "mutability": "mutable",
                        "name": "router",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4607,
                        "src": "2069:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4555,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2069:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4558,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4607,
                        "src": "2093:17:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4557,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2093:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4560,
                        "mutability": "mutable",
                        "name": "amountInMax",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4607,
                        "src": "2120:19:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4559,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2120:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4563,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4607,
                        "src": "2149:23:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4561,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2149:7:11",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 4562,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2149:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4565,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4607,
                        "src": "2182:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4564,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2182:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4567,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4607,
                        "src": "2202:16:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4566,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2202:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2059:165:11"
                  },
                  "returnParameters": {
                    "id": 4569,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2234:0:11"
                  },
                  "scope": 4711,
                  "src": "2029:622:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4659,
                    "nodeType": "Block",
                    "src": "2862:417:11",
                    "statements": [
                      {
                        "assignments": [
                          4624,
                          4626
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4624,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4659,
                            "src": "2873:12:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4623,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2873:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 4626,
                            "mutability": "mutable",
                            "name": "returnData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4659,
                            "src": "2887:23:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4625,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2887:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4643,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 4632,
                                          "name": "router",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4609,
                                          "src": "3002:6:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 4631,
                                        "name": "IPegasysRouter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2976,
                                        "src": "2987:14:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IPegasysRouter_$2976_$",
                                          "typeString": "type(contract IPegasysRouter)"
                                        }
                                      },
                                      "id": 4633,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2987:22:11",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPegasysRouter_$2976",
                                        "typeString": "contract IPegasysRouter"
                                      }
                                    },
                                    "id": 4634,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "swapExactTokensForSYS",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2823,
                                    "src": "2987:44:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"
                                    }
                                  },
                                  "id": 4635,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2987:53:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4636,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4611,
                                  "src": "3058:8:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4637,
                                  "name": "amountOutMin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4613,
                                  "src": "3084:12:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4638,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4616,
                                  "src": "3114:4:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4639,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4618,
                                  "src": "3136:2:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4640,
                                  "name": "deadline",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4620,
                                  "src": "3156:8:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4629,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2947:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4630,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2947:22:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 4641,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2947:231:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4627,
                              "name": "router",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4609,
                              "src": "2914:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 4628,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "delegatecall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2914:19:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) returns (bool,bytes memory)"
                            }
                          },
                          "id": 4642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2914:274:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2872:316:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4645,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4624,
                              "src": "3205:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4644,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "3198:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3198:15:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4647,
                        "nodeType": "ExpressionStatement",
                        "src": "3198:15:11"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4651,
                                  "name": "returnData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4626,
                                  "src": "3247:10:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 4653,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3260:7:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 4652,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3260:7:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 4654,
                                      "indexExpression": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3260:9:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                        "typeString": "type(uint256[] memory)"
                                      }
                                    }
                                  ],
                                  "id": 4655,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "3259:11:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "type(uint256[] memory)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "type(uint256[] memory)"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4649,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3236:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4650,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "decode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3236:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4656,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3236:35:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 4648,
                            "name": "Amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4394,
                            "src": "3228:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (uint256[] memory)"
                            }
                          },
                          "id": 4657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3228:44:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4658,
                        "nodeType": "EmitStatement",
                        "src": "3223:49:11"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "32b56fa5",
                  "id": 4660,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapExactTokensForSYS",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4621,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4609,
                        "mutability": "mutable",
                        "name": "router",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4660,
                        "src": "2697:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4608,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2697:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4611,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4660,
                        "src": "2721:16:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4610,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2721:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4613,
                        "mutability": "mutable",
                        "name": "amountOutMin",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4660,
                        "src": "2747:20:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4612,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2747:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4616,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4660,
                        "src": "2777:23:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4614,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2777:7:11",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 4615,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "2777:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4618,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4660,
                        "src": "2810:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4617,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2810:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4620,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4660,
                        "src": "2830:16:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4619,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2830:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2687:165:11"
                  },
                  "returnParameters": {
                    "id": 4622,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2862:0:11"
                  },
                  "scope": 4711,
                  "src": "2657:622:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 4709,
                    "nodeType": "Block",
                    "src": "3469:388:11",
                    "statements": [
                      {
                        "assignments": [
                          4675,
                          4677
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4675,
                            "mutability": "mutable",
                            "name": "success",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4709,
                            "src": "3480:12:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4674,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "3480:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 4677,
                            "mutability": "mutable",
                            "name": "returnData",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4709,
                            "src": "3494:23:11",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4676,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3494:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4693,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 4683,
                                          "name": "router",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4662,
                                          "src": "3609:6:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 4682,
                                        "name": "IPegasysRouter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2976,
                                        "src": "3594:14:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IPegasysRouter_$2976_$",
                                          "typeString": "type(contract IPegasysRouter)"
                                        }
                                      },
                                      "id": 4684,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3594:22:11",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPegasysRouter_$2976",
                                        "typeString": "contract IPegasysRouter"
                                      }
                                    },
                                    "id": 4685,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "swapSYSForExactTokens",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2838,
                                    "src": "3594:44:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_payable$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "function (uint256,address[] memory,address,uint256) payable external returns (uint256[] memory)"
                                    }
                                  },
                                  "id": 4686,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "3594:53:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4687,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4664,
                                  "src": "3665:9:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4688,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4667,
                                  "src": "3692:4:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4689,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4669,
                                  "src": "3714:2:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4690,
                                  "name": "deadline",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4671,
                                  "src": "3734:8:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4680,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3554:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4681,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3554:22:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 4691,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3554:202:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4678,
                              "name": "router",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4662,
                              "src": "3521:6:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 4679,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "delegatecall",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3521:19:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) returns (bool,bytes memory)"
                            }
                          },
                          "id": 4692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3521:245:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3479:287:11"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4695,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4675,
                              "src": "3783:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4694,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "3776:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 4696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3776:15:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4697,
                        "nodeType": "ExpressionStatement",
                        "src": "3776:15:11"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4701,
                                  "name": "returnData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4677,
                                  "src": "3825:10:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 4703,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3838:7:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 4702,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3838:7:11",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 4704,
                                      "indexExpression": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3838:9:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                        "typeString": "type(uint256[] memory)"
                                      }
                                    }
                                  ],
                                  "id": 4705,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "3837:11:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "type(uint256[] memory)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "type(uint256[] memory)"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4699,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3814:3:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4700,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "decode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3814:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4706,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3814:35:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 4698,
                            "name": "Amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4394,
                            "src": "3806:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (uint256[] memory)"
                            }
                          },
                          "id": 4707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3806:44:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4708,
                        "nodeType": "EmitStatement",
                        "src": "3801:49:11"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d9f5b829",
                  "id": 4710,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swapSYSForExactTokens",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 4672,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4662,
                        "mutability": "mutable",
                        "name": "router",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4710,
                        "src": "3325:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4661,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3325:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4664,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4710,
                        "src": "3349:17:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4663,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3349:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4667,
                        "mutability": "mutable",
                        "name": "path",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4710,
                        "src": "3376:23:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4665,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3376:7:11",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 4666,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3376:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4669,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4710,
                        "src": "3409:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4668,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3409:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4671,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4710,
                        "src": "3429:16:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4670,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3429:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3315:136:11"
                  },
                  "returnParameters": {
                    "id": 4673,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3469:0:11"
                  },
                  "scope": 4711,
                  "src": "3285:572:11",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4712,
              "src": "69:3790:11"
            }
          ],
          "src": "0:3860:11"
        },
        "id": 11
      }
    }
  }
}
