{
  "id": "767e1d4a626d7a79c39d9cd1456594d7",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.6.12",
  "solcLongVersion": "0.6.12+commit.27d51765",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/test/Token.sol": {
        "content": "// SPDX-License-Identifier: LGPL-3.0-only\npragma solidity >=0.6.0 <0.7.0;\nimport \"@gnosis.pm/mock-contract/contracts/MockContract.sol\";\n\ninterface Token {\n    function transfer(address _to, uint256 value) external returns (bool);\n}\n"
      },
      "@gnosis.pm/mock-contract/contracts/MockContract.sol": {
        "content": "pragma solidity ^0.6.0;\n\ninterface MockInterface {\n\t/**\n\t * @dev After calling this method, the mock will return `response` when it is called\n\t * with any calldata that is not mocked more specifically below\n\t * (e.g. using givenMethodReturn).\n\t * @param response ABI encoded response that will be returned if method is invoked\n\t */\n\tfunction givenAnyReturn(bytes calldata response) external;\n\tfunction givenAnyReturnBool(bool response) external;\n\tfunction givenAnyReturnUint(uint response) external;\n\tfunction givenAnyReturnAddress(address response) external;\n\n\tfunction givenAnyRevert() external;\n\tfunction givenAnyRevertWithMessage(string calldata message) external;\n\tfunction givenAnyRunOutOfGas() external;\n\n\t/**\n\t * @dev After calling this method, the mock will return `response` when the given\n\t * methodId is called regardless of arguments. If the methodId and arguments\n\t * are mocked more specifically (using `givenMethodAndArguments`) the latter\n\t * will take precedence.\n\t * @param method ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it\n\t * @param response ABI encoded response that will be returned if method is invoked\n\t */\n\tfunction givenMethodReturn(bytes calldata method, bytes calldata response) external;\n\tfunction givenMethodReturnBool(bytes calldata method, bool response) external;\n\tfunction givenMethodReturnUint(bytes calldata method, uint response) external;\n\tfunction givenMethodReturnAddress(bytes calldata method, address response) external;\n\n\tfunction givenMethodRevert(bytes calldata method) external;\n\tfunction givenMethodRevertWithMessage(bytes calldata method, string calldata message) external;\n\tfunction givenMethodRunOutOfGas(bytes calldata method) external;\n\n\t/**\n\t * @dev After calling this method, the mock will return `response` when the given\n\t * methodId is called with matching arguments. These exact calldataMocks will take\n\t * precedence over all other calldataMocks.\n\t * @param call ABI encoded calldata (methodId and arguments)\n\t * @param response ABI encoded response that will be returned if contract is invoked with calldata\n\t */\n\tfunction givenCalldataReturn(bytes calldata call, bytes calldata response) external;\n\tfunction givenCalldataReturnBool(bytes calldata call, bool response) external;\n\tfunction givenCalldataReturnUint(bytes calldata call, uint response) external;\n\tfunction givenCalldataReturnAddress(bytes calldata call, address response) external;\n\n\tfunction givenCalldataRevert(bytes calldata call) external;\n\tfunction givenCalldataRevertWithMessage(bytes calldata call, string calldata message) external;\n\tfunction givenCalldataRunOutOfGas(bytes calldata call) external;\n\n\t/**\n\t * @dev Returns the number of times anything has been called on this mock since last reset\n\t */\n\tfunction invocationCount() external returns (uint);\n\n\t/**\n\t * @dev Returns the number of times the given method has been called on this mock since last reset\n\t * @param method ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it\n\t */\n\tfunction invocationCountForMethod(bytes calldata method) external returns (uint);\n\n\t/**\n\t * @dev Returns the number of times this mock has been called with the exact calldata since last reset.\n\t * @param call ABI encoded calldata (methodId and arguments)\n\t */\n\tfunction invocationCountForCalldata(bytes calldata call) external returns (uint);\n\n\t/**\n\t * @dev Resets all mocked methods and invocation counts.\n\t */\n\t function reset() external;\n}\n\n/**\n * Implementation of the MockInterface.\n */\ncontract MockContract is MockInterface {\n\tenum MockType { Return, Revert, OutOfGas }\n\t\n\tbytes32 public constant MOCKS_LIST_START = hex\"01\";\n\tbytes public constant MOCKS_LIST_END = \"0xff\";\n\tbytes32 public constant MOCKS_LIST_END_HASH = keccak256(MOCKS_LIST_END);\n\tbytes4 public constant SENTINEL_ANY_MOCKS = hex\"01\";\n\tbytes public constant DEFAULT_FALLBACK_VALUE = abi.encode(false);\n\n\t// A linked list allows easy iteration and inclusion checks\n\tmapping(bytes32 => bytes) calldataMocks;\n\tmapping(bytes => MockType) calldataMockTypes;\n\tmapping(bytes => bytes) calldataExpectations;\n\tmapping(bytes => string) calldataRevertMessage;\n\tmapping(bytes32 => uint) calldataInvocations;\n\n\tmapping(bytes4 => bytes4) methodIdMocks;\n\tmapping(bytes4 => MockType) methodIdMockTypes;\n\tmapping(bytes4 => bytes) methodIdExpectations;\n\tmapping(bytes4 => string) methodIdRevertMessages;\n\tmapping(bytes32 => uint) methodIdInvocations;\n\n\tMockType fallbackMockType;\n\tbytes fallbackExpectation = DEFAULT_FALLBACK_VALUE;\n\tstring fallbackRevertMessage;\n\tuint invocations;\n\tuint resetCount;\n\n\tconstructor() public {\n\t\tcalldataMocks[MOCKS_LIST_START] = MOCKS_LIST_END;\n\t\tmethodIdMocks[SENTINEL_ANY_MOCKS] = SENTINEL_ANY_MOCKS;\n\t}\n\n\tfunction trackCalldataMock(bytes memory call) private {\n\t\tbytes32 callHash = keccak256(call);\n\t\tif (calldataMocks[callHash].length == 0) {\n\t\t\tcalldataMocks[callHash] = calldataMocks[MOCKS_LIST_START];\n\t\t\tcalldataMocks[MOCKS_LIST_START] = call;\n\t\t}\n\t}\n\n\tfunction trackMethodIdMock(bytes4 methodId) private {\n\t\tif (methodIdMocks[methodId] == 0x0) {\n\t\t\tmethodIdMocks[methodId] = methodIdMocks[SENTINEL_ANY_MOCKS];\n\t\t\tmethodIdMocks[SENTINEL_ANY_MOCKS] = methodId;\n\t\t}\n\t}\n\n\tfunction _givenAnyReturn(bytes memory response) internal {\n\t\tfallbackMockType = MockType.Return;\n\t\tfallbackExpectation = response;\n\t}\n\n\tfunction givenAnyReturn(bytes calldata response) override external {\n\t\t_givenAnyReturn(response);\n\t}\n\n\tfunction givenAnyReturnBool(bool response) override external {\n\t\tuint flag = response ? 1 : 0;\n\t\t_givenAnyReturn(uintToBytes(flag));\n\t}\n\n\tfunction givenAnyReturnUint(uint response) override external {\n\t\t_givenAnyReturn(uintToBytes(response));\t\n\t}\n\n\tfunction givenAnyReturnAddress(address response) override external {\n\t\t_givenAnyReturn(uintToBytes(uint(response)));\n\t}\n\n\tfunction givenAnyRevert() override external {\n\t\tfallbackMockType = MockType.Revert;\n\t\tfallbackRevertMessage = \"\";\n\t}\n\n\tfunction givenAnyRevertWithMessage(string calldata message) override external {\n\t\tfallbackMockType = MockType.Revert;\n\t\tfallbackRevertMessage = message;\n\t}\n\n\tfunction givenAnyRunOutOfGas() override external {\n\t\tfallbackMockType = MockType.OutOfGas;\n\t}\n\n\tfunction _givenCalldataReturn(bytes memory call, bytes memory response) private  {\n\t\tcalldataMockTypes[call] = MockType.Return;\n\t\tcalldataExpectations[call] = response;\n\t\ttrackCalldataMock(call);\n\t}\n\n\tfunction givenCalldataReturn(bytes calldata call, bytes calldata response) override external  {\n\t\t_givenCalldataReturn(call, response);\n\t}\n\n\tfunction givenCalldataReturnBool(bytes calldata call, bool response) override external {\n\t\tuint flag = response ? 1 : 0;\n\t\t_givenCalldataReturn(call, uintToBytes(flag));\n\t}\n\n\tfunction givenCalldataReturnUint(bytes calldata call, uint response) override external {\n\t\t_givenCalldataReturn(call, uintToBytes(response));\n\t}\n\n\tfunction givenCalldataReturnAddress(bytes calldata call, address response) override external {\n\t\t_givenCalldataReturn(call, uintToBytes(uint(response)));\n\t}\n\n\tfunction _givenMethodReturn(bytes memory call, bytes memory response) private {\n\t\tbytes4 method = bytesToBytes4(call);\n\t\tmethodIdMockTypes[method] = MockType.Return;\n\t\tmethodIdExpectations[method] = response;\n\t\ttrackMethodIdMock(method);\t\t\n\t}\n\n\tfunction givenMethodReturn(bytes calldata call, bytes calldata response) override external {\n\t\t_givenMethodReturn(call, response);\n\t}\n\n\tfunction givenMethodReturnBool(bytes calldata call, bool response) override external {\n\t\tuint flag = response ? 1 : 0;\n\t\t_givenMethodReturn(call, uintToBytes(flag));\n\t}\n\n\tfunction givenMethodReturnUint(bytes calldata call, uint response) override external {\n\t\t_givenMethodReturn(call, uintToBytes(response));\n\t}\n\n\tfunction givenMethodReturnAddress(bytes calldata call, address response) override external {\n\t\t_givenMethodReturn(call, uintToBytes(uint(response)));\n\t}\n\n\tfunction givenCalldataRevert(bytes calldata call) override external {\n\t\tcalldataMockTypes[call] = MockType.Revert;\n\t\tcalldataRevertMessage[call] = \"\";\n\t\ttrackCalldataMock(call);\n\t}\n\n\tfunction givenMethodRevert(bytes calldata call) override external {\n\t\tbytes4 method = bytesToBytes4(call);\n\t\tmethodIdMockTypes[method] = MockType.Revert;\n\t\ttrackMethodIdMock(method);\t\t\n\t}\n\n\tfunction givenCalldataRevertWithMessage(bytes calldata call, string calldata message) override external {\n\t\tcalldataMockTypes[call] = MockType.Revert;\n\t\tcalldataRevertMessage[call] = message;\n\t\ttrackCalldataMock(call);\n\t}\n\n\tfunction givenMethodRevertWithMessage(bytes calldata call, string calldata message) override external {\n\t\tbytes4 method = bytesToBytes4(call);\n\t\tmethodIdMockTypes[method] = MockType.Revert;\n\t\tmethodIdRevertMessages[method] = message;\n\t\ttrackMethodIdMock(method);\t\t\n\t}\n\n\tfunction givenCalldataRunOutOfGas(bytes calldata call) override external {\n\t\tcalldataMockTypes[call] = MockType.OutOfGas;\n\t\ttrackCalldataMock(call);\n\t}\n\n\tfunction givenMethodRunOutOfGas(bytes calldata call) override external {\n\t\tbytes4 method = bytesToBytes4(call);\n\t\tmethodIdMockTypes[method] = MockType.OutOfGas;\n\t\ttrackMethodIdMock(method);\t\n\t}\n\n\tfunction invocationCount() override external returns (uint) {\n\t\treturn invocations;\n\t}\n\n\tfunction invocationCountForMethod(bytes calldata call) override external returns (uint) {\n\t\tbytes4 method = bytesToBytes4(call);\n\t\treturn methodIdInvocations[keccak256(abi.encodePacked(resetCount, method))];\n\t}\n\n\tfunction invocationCountForCalldata(bytes calldata call) override external returns (uint) {\n\t\treturn calldataInvocations[keccak256(abi.encodePacked(resetCount, call))];\n\t}\n\n\tfunction reset() override external {\n\t\t// Reset all exact calldataMocks\n\t\tbytes memory nextMock = calldataMocks[MOCKS_LIST_START];\n\t\tbytes32 mockHash = keccak256(nextMock);\n\t\t// We cannot compary bytes\n\t\twhile(mockHash != MOCKS_LIST_END_HASH) {\n\t\t\t// Reset all mock maps\n\t\t\tcalldataMockTypes[nextMock] = MockType.Return;\n\t\t\tcalldataExpectations[nextMock] = hex\"\";\n\t\t\tcalldataRevertMessage[nextMock] = \"\";\n\t\t\t// Set next mock to remove\n\t\t\tnextMock = calldataMocks[mockHash];\n\t\t\t// Remove from linked list\n\t\t\tcalldataMocks[mockHash] = \"\";\n\t\t\t// Update mock hash\n\t\t\tmockHash = keccak256(nextMock);\n\t\t}\n\t\t// Clear list\n\t\tcalldataMocks[MOCKS_LIST_START] = MOCKS_LIST_END;\n\n\t\t// Reset all any calldataMocks\n\t\tbytes4 nextAnyMock = methodIdMocks[SENTINEL_ANY_MOCKS];\n\t\twhile(nextAnyMock != SENTINEL_ANY_MOCKS) {\n\t\t\tbytes4 currentAnyMock = nextAnyMock;\n\t\t\tmethodIdMockTypes[currentAnyMock] = MockType.Return;\n\t\t\tmethodIdExpectations[currentAnyMock] = hex\"\";\n\t\t\tmethodIdRevertMessages[currentAnyMock] = \"\";\n\t\t\tnextAnyMock = methodIdMocks[currentAnyMock];\n\t\t\t// Remove from linked list\n\t\t\tmethodIdMocks[currentAnyMock] = 0x0;\n\t\t}\n\t\t// Clear list\n\t\tmethodIdMocks[SENTINEL_ANY_MOCKS] = SENTINEL_ANY_MOCKS;\n\n\t\tfallbackExpectation = DEFAULT_FALLBACK_VALUE;\n\t\tfallbackMockType = MockType.Return;\n\t\tinvocations = 0;\n\t\tresetCount += 1;\n\t}\n\n\tfunction useAllGas() private {\n\t\twhile(true) {\n\t\t\tbool s;\n\t\t\tassembly {\n\t\t\t\t//expensive call to EC multiply contract\n\t\t\t\ts := call(sub(gas(), 2000), 6, 0, 0x0, 0xc0, 0x0, 0x60)\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction bytesToBytes4(bytes memory b) private pure returns (bytes4) {\n\t\tbytes4 out;\n\t\tfor (uint i = 0; i < 4; i++) {\n\t\t\tout |= bytes4(b[i] & 0xFF) >> (i * 8);\n\t\t}\n\t\treturn out;\n\t}\n\n\tfunction uintToBytes(uint256 x) private pure returns (bytes memory b) {\n\t\tb = new bytes(32);\n\t\tassembly { mstore(add(b, 32), x) }\n\t}\n\n\tfunction updateInvocationCount(bytes4 methodId, bytes memory originalMsgData) public {\n\t\trequire(msg.sender == address(this), \"Can only be called from the contract itself\");\n\t\tinvocations += 1;\n\t\tmethodIdInvocations[keccak256(abi.encodePacked(resetCount, methodId))] += 1;\n\t\tcalldataInvocations[keccak256(abi.encodePacked(resetCount, originalMsgData))] += 1;\n\t}\n\n\tfallback () payable external {\n\t\tbytes4 methodId;\n\t\tassembly {\n\t\t\tmethodId := calldataload(0)\n\t\t}\n\n\t\t// First, check exact matching overrides\n\t\tif (calldataMockTypes[msg.data] == MockType.Revert) {\n\t\t\trevert(calldataRevertMessage[msg.data]);\n\t\t}\n\t\tif (calldataMockTypes[msg.data] == MockType.OutOfGas) {\n\t\t\tuseAllGas();\n\t\t}\n\t\tbytes memory result = calldataExpectations[msg.data];\n\n\t\t// Then check method Id overrides\n\t\tif (result.length == 0) {\n\t\t\tif (methodIdMockTypes[methodId] == MockType.Revert) {\n\t\t\t\trevert(methodIdRevertMessages[methodId]);\n\t\t\t}\n\t\t\tif (methodIdMockTypes[methodId] == MockType.OutOfGas) {\n\t\t\t\tuseAllGas();\n\t\t\t}\n\t\t\tresult = methodIdExpectations[methodId];\n\t\t}\n\n\t\t// Last, use the fallback override\n\t\tif (result.length == 0) {\n\t\t\tif (fallbackMockType == MockType.Revert) {\n\t\t\t\trevert(fallbackRevertMessage);\n\t\t\t}\n\t\t\tif (fallbackMockType == MockType.OutOfGas) {\n\t\t\t\tuseAllGas();\n\t\t\t}\n\t\t\tresult = fallbackExpectation;\n\t\t}\n\n\t\t// Record invocation as separate call so we don't rollback in case we are called with STATICCALL\n\t\t(, bytes memory r) = address(this).call{gas: 100000}(abi.encodeWithSignature(\"updateInvocationCount(bytes4,bytes)\", methodId, msg.data));\n\t\tassert(r.length == 0);\n\t\t\n\t\tassembly {\n\t\t\treturn(add(0x20, result), mload(result))\n\t\t}\n\t}\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": false,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "metadata",
            "devdoc",
            "userdoc",
            "storageLayout",
            "evm.gasEstimates"
          ],
          "": [
            "ast"
          ]
        }
      },
      "metadata": {
        "useLiteralContent": true
      }
    }
  },
  "output": {
    "contracts": {
      "@gnosis.pm/mock-contract/contracts/MockContract.sol": {
        "MockContract": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "stateMutability": "payable",
              "type": "fallback"
            },
            {
              "inputs": [],
              "name": "DEFAULT_FALLBACK_VALUE",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MOCKS_LIST_END",
              "outputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MOCKS_LIST_END_HASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "MOCKS_LIST_START",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "SENTINEL_ANY_MOCKS",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "response",
                  "type": "bytes"
                }
              ],
              "name": "givenAnyReturn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "response",
                  "type": "address"
                }
              ],
              "name": "givenAnyReturnAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "response",
                  "type": "bool"
                }
              ],
              "name": "givenAnyReturnBool",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "response",
                  "type": "uint256"
                }
              ],
              "name": "givenAnyReturnUint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "givenAnyRevert",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "message",
                  "type": "string"
                }
              ],
              "name": "givenAnyRevertWithMessage",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "givenAnyRunOutOfGas",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "response",
                  "type": "bytes"
                }
              ],
              "name": "givenCalldataReturn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "response",
                  "type": "address"
                }
              ],
              "name": "givenCalldataReturnAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "bool",
                  "name": "response",
                  "type": "bool"
                }
              ],
              "name": "givenCalldataReturnBool",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "response",
                  "type": "uint256"
                }
              ],
              "name": "givenCalldataReturnUint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                }
              ],
              "name": "givenCalldataRevert",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "string",
                  "name": "message",
                  "type": "string"
                }
              ],
              "name": "givenCalldataRevertWithMessage",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                }
              ],
              "name": "givenCalldataRunOutOfGas",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "response",
                  "type": "bytes"
                }
              ],
              "name": "givenMethodReturn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "response",
                  "type": "address"
                }
              ],
              "name": "givenMethodReturnAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "bool",
                  "name": "response",
                  "type": "bool"
                }
              ],
              "name": "givenMethodReturnBool",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "response",
                  "type": "uint256"
                }
              ],
              "name": "givenMethodReturnUint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                }
              ],
              "name": "givenMethodRevert",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "string",
                  "name": "message",
                  "type": "string"
                }
              ],
              "name": "givenMethodRevertWithMessage",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                }
              ],
              "name": "givenMethodRunOutOfGas",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "invocationCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                }
              ],
              "name": "invocationCountForCalldata",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                }
              ],
              "name": "invocationCountForMethod",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "reset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "methodId",
                  "type": "bytes4"
                },
                {
                  "internalType": "bytes",
                  "name": "originalMsgData",
                  "type": "bytes"
                }
              ],
              "name": "updateInvocationCount",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "givenAnyReturn(bytes)": {
                "details": "After calling this method, the mock will return `response` when it is called with any calldata that is not mocked more specifically below (e.g. using givenMethodReturn).",
                "params": {
                  "response": "ABI encoded response that will be returned if method is invoked"
                }
              },
              "givenCalldataReturn(bytes,bytes)": {
                "details": "After calling this method, the mock will return `response` when the given methodId is called with matching arguments. These exact calldataMocks will take precedence over all other calldataMocks.",
                "params": {
                  "call": "ABI encoded calldata (methodId and arguments)",
                  "response": "ABI encoded response that will be returned if contract is invoked with calldata"
                }
              },
              "invocationCount()": {
                "details": "Returns the number of times anything has been called on this mock since last reset"
              },
              "invocationCountForCalldata(bytes)": {
                "details": "Returns the number of times this mock has been called with the exact calldata since last reset.",
                "params": {
                  "call": "ABI encoded calldata (methodId and arguments)"
                }
              },
              "reset()": {
                "details": "Resets all mocked methods and invocation counts."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "60806040526000604051602001808215158152602001915050604051602081830303815290604052600b90805190602001906200003e9291906200017e565b503480156200004c57600080fd5b506040518060400160405280600481526020017f30786666000000000000000000000000000000000000000000000000000000008152506000807f010000000000000000000000000000000000000000000000000000000000000081526020019081526020016000209080519060200190620000ca9291906200017e565b507f0100000000000000000000000000000000000000000000000000000000000000600560007f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548163ffffffff021916908360e01c021790555062000224565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001c157805160ff1916838001178555620001f2565b82800160010185558215620001f2579182015b82811115620001f1578251825591602001919060010190620001d4565b5b50905062000201919062000205565b5090565b5b808211156200022057600081600090555060010162000206565b5090565b6139b180620002346000396000f3fe6080604052600436106101dc5760003560e01c80637cd96ee411610102578063cf11ff5d11610095578063e211b8a511610064578063e211b8a51461188a578063eb861f69146118a1578063f07da22914611927578063f5afa9c114611971576101dd565b8063cf11ff5d146116b7578063d6fe97781461175d578063d73ca0ac146117e3578063d826f88f14611873576101dd565b8063aa788c55116100d1578063aa788c5514611475578063af21ac78146114fb578063b3901f2914611536578063c6ee167f146115dc576101dd565b80637cd96ee4146111a957806387abab65146112395780639a1dc86b146112bf5780639eaeed751461139a576101dd565b8063586984a41161017a57806367aad04a1161014957806367aad04a14611015578063682b47971461104057806368ab6f2f146110915780636f40075614611117576101dd565b8063586984a414610d1d57806358cbc02514610db75780635a3855ab14610ea85780636193659414610f3a576101dd565b80632ed238dc116101b65780632ed238dc14610c0457806336ff0ee514610c2f5780633956dc6b14610c6c5780634937c4f614610c83576101dd565b80630a20119f14610ac3578063122aea8114610aee57806321fed4d614610b7e576101dd565b5b600080359050600160028111156101f057fe5b6001600036604051808383808284378083019250505092505050908152602001604051809103902060009054906101000a900460ff16600281111561023157fe5b141561031d57600360003660405180838380828437808301925050509250505090815260200160405180910390206040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561030e5780601f106102e35761010080835404028352916020019161030e565b820191906000526020600020905b8154815290600101906020018083116102f157829003601f168201915b50509250505060405180910390fd5b60028081111561032957fe5b6001600036604051808383808284378083019250505092505050908152602001604051809103902060009054906101000a900460ff16600281111561036a57fe5b141561037957610378611a01565b5b6060600260003660405180838380828437808301925050509250505090815260200160405180910390208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104375780601f1061040c57610100808354040283529160200191610437565b820191906000526020600020905b81548152906001019060200180831161041a57829003601f168201915b50505050509050600081511415610746576001600281111561045557fe5b60066000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff1660028111156104bf57fe5b14156105d45760086000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000206040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156105c55780601f1061059a576101008083540402835291602001916105c5565b820191906000526020600020905b8154815290600101906020018083116105a857829003601f168201915b50509250505060405180910390fd5b6002808111156105e057fe5b60066000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff16600281111561064a57fe5b141561065957610658611a01565b5b60076000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561073e5780601f106107135761010080835404028352916020019161073e565b820191906000526020600020905b81548152906001019060200180831161072157829003601f168201915b505050505090505b600081511415610912576001600281111561075d57fe5b600a60009054906101000a900460ff16600281111561077857fe5b141561083e57600c6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561082f5780601f106108045761010080835404028352916020019161082f565b820191906000526020600020905b81548152906001019060200180831161081257829003601f168201915b50509250505060405180910390fd5b60028081111561084a57fe5b600a60009054906101000a900460ff16600281111561086557fe5b141561087457610873611a01565b5b600b8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561090a5780601f106108df5761010080835404028352916020019161090a565b820191906000526020600020905b8154815290600101906020018083116108ed57829003601f168201915b505050505090505b60603073ffffffffffffffffffffffffffffffffffffffff16620186a08460003660405160240180847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509450505050506040516020818303038152906040527f58cbc025000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610a445780518252602082019150602081019050602083039250610a21565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d8060008114610aa7576040519150601f19603f3d011682016040523d82523d6000602084013e610aac565b606091505b509150506000815114610abb57fe5b815182602001f35b348015610acf57600080fd5b50610ad8611a26565b6040518082815260200191505060405180910390f35b348015610afa57600080fd5b50610b03611a30565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b43578082015181840152602081019050610b28565b50505050905090810190601f168015610b705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b8a57600080fd5b50610c0260048036036020811015610ba157600080fd5b8101908080359060200190640100000000811115610bbe57600080fd5b820183602082011115610bd057600080fd5b80359060200191846001830284011164010000000083111715610bf257600080fd5b9091929391929390505050611a56565b005b348015610c1057600080fd5b50610c19611af0565b6040518082815260200191505060405180910390f35b348015610c3b57600080fd5b50610c6a60048036036020811015610c5257600080fd5b81019080803515159060200190929190505050611b30565b005b348015610c7857600080fd5b50610c81611b5b565b005b348015610c8f57600080fd5b50610d0760048036036020811015610ca657600080fd5b8101908080359060200190640100000000811115610cc357600080fd5b820183602082011115610cd557600080fd5b80359060200191846001830284011164010000000083111715610cf757600080fd5b9091929391929390505050611b81565b6040518082815260200191505060405180910390f35b348015610d2957600080fd5b50610da160048036036020811015610d4057600080fd5b8101908080359060200190640100000000811115610d5d57600080fd5b820183602082011115610d6f57600080fd5b80359060200191846001830284011164010000000083111715610d9157600080fd5b9091929391929390505050611c3f565b6040518082815260200191505060405180910390f35b348015610dc357600080fd5b50610ea660048036036040811015610dda57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919080359060200190640100000000811115610e2057600080fd5b820183602082011115610e3257600080fd5b80359060200191846001830284011164010000000083111715610e5457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611c96565b005b348015610eb457600080fd5b50610f3860048036036040811015610ecb57600080fd5b8101908080359060200190640100000000811115610ee857600080fd5b820183602082011115610efa57600080fd5b80359060200191846001830284011164010000000083111715610f1c57600080fd5b9091929391929390803515159060200190929190505050611e3d565b005b348015610f4657600080fd5b5061101360048036036040811015610f5d57600080fd5b8101908080359060200190640100000000811115610f7a57600080fd5b820183602082011115610f8c57600080fd5b80359060200191846001830284011164010000000083111715610fae57600080fd5b909192939192939080359060200190640100000000811115610fcf57600080fd5b820183602082011115610fe157600080fd5b8035906020019184600183028401116401000000008311171561100357600080fd5b9091929391929390505050611eaf565b005b34801561102157600080fd5b5061102a611f47565b6040518082815260200191505060405180910390f35b34801561104c57600080fd5b5061108f6004803603602081101561106357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f6b565b005b34801561109d57600080fd5b50611115600480360360208110156110b457600080fd5b81019080803590602001906401000000008111156110d157600080fd5b8201836020820111156110e357600080fd5b8035906020019184600183028401116401000000008311171561110557600080fd5b9091929391929390505050611f95565b005b34801561112357600080fd5b506111a76004803603604081101561113a57600080fd5b810190808035906020019064010000000081111561115757600080fd5b82018360208201111561116957600080fd5b8035906020019184600183028401116401000000008311171561118b57600080fd5b9091929391929390803515159060200190929190505050612067565b005b3480156111b557600080fd5b506111be6120d9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156111fe5780820151818401526020810190506111e3565b50505050905090810190601f16801561122b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561124557600080fd5b506112bd6004803603602081101561125c57600080fd5b810190808035906020019064010000000081111561127957600080fd5b82018360208201111561128b57600080fd5b803590602001918460018302840111640100000000831117156112ad57600080fd5b9091929391929390505050612112565b005b3480156112cb57600080fd5b50611398600480360360408110156112e257600080fd5b81019080803590602001906401000000008111156112ff57600080fd5b82018360208201111561131157600080fd5b8035906020019184600183028401116401000000008311171561133357600080fd5b90919293919293908035906020019064010000000081111561135457600080fd5b82018360208201111561136657600080fd5b8035906020019184600183028401116401000000008311171561138857600080fd5b909192939192939050505061214c565b005b3480156113a657600080fd5b50611473600480360360408110156113bd57600080fd5b81019080803590602001906401000000008111156113da57600080fd5b8201836020820111156113ec57600080fd5b8035906020019184600183028401116401000000008311171561140e57600080fd5b90919293919293908035906020019064010000000081111561142f57600080fd5b82018360208201111561144157600080fd5b8035906020019184600183028401116401000000008311171561146357600080fd5b9091929391929390505050612281565b005b34801561148157600080fd5b506114f96004803603602081101561149857600080fd5b81019080803590602001906401000000008111156114b557600080fd5b8201836020820111156114c757600080fd5b803590602001918460018302840111640100000000831117156114e957600080fd5b9091929391929390505050612353565b005b34801561150757600080fd5b506115346004803603602081101561151e57600080fd5b8101908080359060200190929190505050612425565b005b34801561154257600080fd5b506115da6004803603604081101561155957600080fd5b810190808035906020019064010000000081111561157657600080fd5b82018360208201111561158857600080fd5b803590602001918460018302840111640100000000831117156115aa57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612439565b005b3480156115e857600080fd5b506116b5600480360360408110156115ff57600080fd5b810190808035906020019064010000000081111561161c57600080fd5b82018360208201111561162e57600080fd5b8035906020019184600183028401116401000000008311171561165057600080fd5b90919293919293908035906020019064010000000081111561167157600080fd5b82018360208201111561168357600080fd5b803590602001918460018302840111640100000000831117156116a557600080fd5b90919293919293905050506124aa565b005b3480156116c357600080fd5b5061175b600480360360408110156116da57600080fd5b81019080803590602001906401000000008111156116f757600080fd5b82018360208201111561170957600080fd5b8035906020019184600183028401116401000000008311171561172b57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612542565b005b34801561176957600080fd5b506117e16004803603602081101561178057600080fd5b810190808035906020019064010000000081111561179d57600080fd5b8201836020820111156117af57600080fd5b803590602001918460018302840111640100000000831117156117d157600080fd5b90919293919293905050506125b3565b005b3480156117ef57600080fd5b506118716004803603604081101561180657600080fd5b810190808035906020019064010000000081111561182357600080fd5b82018360208201111561183557600080fd5b8035906020019184600183028401116401000000008311171561185757600080fd5b909192939192939080359060200190929190505050612604565b005b34801561187f57600080fd5b5061188861265f565b005b34801561189657600080fd5b5061189f612edc565b005b3480156118ad57600080fd5b50611925600480360360208110156118c457600080fd5b81019080803590602001906401000000008111156118e157600080fd5b8201836020820111156118f357600080fd5b8035906020019184600183028401116401000000008311171561191557600080fd5b9091929391929390505050612f28565b005b34801561193357600080fd5b5061193c61300c565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561197d57600080fd5b506119ff6004803603604081101561199457600080fd5b81019080803590602001906401000000008111156119b157600080fd5b8201836020820111156119c357600080fd5b803590602001918460018302840111640100000000831117156119e557600080fd5b909192939192939080359060200190929190505050613030565b005b5b600115611a245760006060600060c060008060066107d05a03f1905050611a02565b565b6000600d54905090565b600060405160200180821515815260200191505060405160208183030381529060405281565b600260018383604051808383808284378083019250505092505050908152602001604051809103902060006101000a81548160ff02191690836002811115611a9a57fe5b0217905550611aec82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061308b565b5050565b6040518060400160405280600481526020017f30786666000000000000000000000000000000000000000000000000000000008152508051906020012081565b600081611b3e576000611b41565b60015b60ff169050611b57611b5282613176565b6131d1565b5050565b6002600a60006101000a81548160ff02191690836002811115611b7a57fe5b0217905550565b600080611bd184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061320f565b905060096000600e548360405160200180838152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600401925050506040516020818303038152906040528051906020012081526020019081526020016000205491505092915050565b600060046000600e5485856040516020018084815260200183838082843780830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002054905092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613951602b913960400191505060405180910390fd5b6001600d60008282540192505081905550600160096000600e548560405160200180838152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526004019250505060405160208183030381529060405280519060200120815260200190815260200160002060008282540192505081905550600160046000600e54846040516020018083815260200182805190602001908083835b60208310611de25780518252602082019150602081019050602083039250611dbf565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052805190602001208152602001908152602001600020600082825401925050819055505050565b600081611e4b576000611e4e565b60015b60ff169050611ea984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611ea483613176565b61329d565b50505050565b611f4184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061329d565b50505050565b7f010000000000000000000000000000000000000000000000000000000000000081565b611f92611f8d8273ffffffffffffffffffffffffffffffffffffffff16613176565b6131d1565b50565b6000611fe483838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061320f565b9050600260066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083600281111561205457fe5b0217905550612062816133b3565b505050565b600081612075576000612078565b60015b60ff1690506120d384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506120ce83613176565b6135b8565b50505050565b6040518060400160405280600481526020017f307866660000000000000000000000000000000000000000000000000000000081525081565b6001600a60006101000a81548160ff0219169083600281111561213157fe5b02179055508181600c91906121479291906136ac565b505050565b600061219b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061320f565b9050600160066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083600281111561220b57fe5b0217905550828260086000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002091906122709291906136ac565b5061227a816133b3565b5050505050565b6001808585604051808383808284378083019250505092505050908152602001604051809103902060006101000a81548160ff021916908360028111156122c457fe5b0217905550818160038686604051808383808284378083019250505092505050908152602001604051809103902091906122ff9291906136ac565b5061234d84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061308b565b50505050565b60006123a283838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061320f565b9050600160066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083600281111561241257fe5b0217905550612420816133b3565b505050565b61243661243182613176565b6131d1565b50565b6124a583838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506124a08373ffffffffffffffffffffffffffffffffffffffff16613176565b61329d565b505050565b61253c84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506135b8565b50505050565b6125ae83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506125a98373ffffffffffffffffffffffffffffffffffffffff16613176565b6135b8565b505050565b61260082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506131d1565b5050565b61265a83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061265583613176565b61329d565b505050565b60606000807f010000000000000000000000000000000000000000000000000000000000000081526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127275780601f106126fc57610100808354040283529160200191612727565b820191906000526020600020905b81548152906001019060200180831161270a57829003601f168201915b505050505090506000818051906020012090505b6040518060400160405280600481526020017f3078666600000000000000000000000000000000000000000000000000000000815250805190602001208114612a155760006001836040518082805190602001908083835b602083106127b65780518252602082019150602081019050602083039250612793565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548160ff0219169083600281111561280457fe5b0217905550604051806020016040528060008152506002836040518082805190602001908083835b6020831061284f578051825260208201915060208101905060208303925061282c565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020908051906020019061289592919061372c565b50604051806020016040528060008152506003836040518082805190602001908083835b602083106128dc57805182526020820191506020810190506020830392506128b9565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902090805190602001906129229291906137ac565b506000808281526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129c95780601f1061299e576101008083540402835291602001916129c9565b820191906000526020600020905b8154815290600101906020018083116129ac57829003601f168201915b50505050509150604051806020016040528060008152506000808381526020019081526020016000209080519060200190612a0592919061372c565b508180519060200120905061273b565b6040518060400160405280600481526020017f30786666000000000000000000000000000000000000000000000000000000008152506000807f010000000000000000000000000000000000000000000000000000000000000081526020019081526020016000209080519060200190612a9092919061382c565b506000600560007f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460e01b90505b7f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612db4576000819050600060066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690836002811115612bed57fe5b02179055506040518060200160405280600081525060076000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000209080519060200190612c6692919061372c565b506040518060200160405280600081525060086000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000209080519060200190612cdb9291906137ac565b5060056000827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460e01b9150600060e01b60056000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548163ffffffff021916908360e01c021790555050612b15565b7f0100000000000000000000000000000000000000000000000000000000000000600560007f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548163ffffffff021916908360e01c02179055506000604051602001808215158152602001915050604051602081830303815290604052600b9080519060200190612e9992919061382c565b506000600a60006101000a81548160ff02191690836002811115612eb957fe5b02179055506000600d819055506001600e60008282540192505081905550505050565b6001600a60006101000a81548160ff02191690836002811115612efb57fe5b021790555060405180602001604052806000815250600c9080519060200190612f259291906137ac565b50565b6001808383604051808383808284378083019250505092505050908152602001604051809103902060006101000a81548160ff02191690836002811115612f6b57fe5b0217905550604051806020016040528060008152506003838360405180838380828437808301925050509250505090815260200160405180910390209080519060200190612fba9291906137ac565b5061300882828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061308b565b5050565b7f010000000000000000000000000000000000000000000000000000000000000081565b61308683838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061308183613176565b6135b8565b505050565b60008180519060200120905060008060008381526020019081526020016000208054600181600116156101000203166002900490501415613172576000807f0100000000000000000000000000000000000000000000000000000000000000815260200190815260200160002060008083815260200190815260200160002090805460018160011615610100020316600290046131299291906138ac565b50816000807f01000000000000000000000000000000000000000000000000000000000000008152602001908152602001600020908051906020019061317092919061382c565b505b5050565b6060602067ffffffffffffffff8111801561319057600080fd5b506040519080825280601f01601f1916602001820160405280156131c35781602001600182028036833780820191505090505b509050816020820152919050565b6000600a60006101000a81548160ff021916908360028111156131f057fe5b021790555080600b908051906020019061320b92919061382c565b5050565b60008060005b6004811015613293576008810260ff60f81b85838151811061323357fe5b602001015160f81c60f81b167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c821791508080600101915050613215565b5080915050919050565b60006001836040518082805190602001908083835b602083106132d557805182526020820191506020810190506020830392506132b2565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548160ff0219169083600281111561332357fe5b0217905550806002836040518082805190602001908083835b6020831061335f578051825260208201915060208101905060208303925061333c565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902090805190602001906133a592919061382c565b506133af8261308b565b5050565b600060e01b60056000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156135b557600560007f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460e01b60056000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548163ffffffff021916908360e01c021790555080600560007f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548163ffffffff021916908360e01c02179055505b50565b60006135c38361320f565b9050600060066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083600281111561363357fe5b02179055508160076000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020908051906020019061369d92919061382c565b506136a7816133b3565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106136ed57803560ff191683800117855561371b565b8280016001018555821561371b579182015b8281111561371a5782358255916020019190600101906136ff565b5b5090506137289190613933565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061376d57805160ff191683800117855561379b565b8280016001018555821561379b579182015b8281111561379a57825182559160200191906001019061377f565b5b5090506137a89190613933565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106137ed57805160ff191683800117855561381b565b8280016001018555821561381b579182015b8281111561381a5782518255916020019190600101906137ff565b5b5090506138289190613933565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061386d57805160ff191683800117855561389b565b8280016001018555821561389b579182015b8281111561389a57825182559160200191906001019061387f565b5b5090506138a89190613933565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106138e55780548555613922565b8280016001018555821561392257600052602060002091601f016020900482015b82811115613921578254825591600101919060010190613906565b5b50905061392f9190613933565b5090565b5b8082111561394c576000816000905550600101613934565b509056fe43616e206f6e6c792062652063616c6c65642066726f6d2074686520636f6e747261637420697473656c66a2646970667358221220e7ce62dd68bc079c6c25c9e19ce1eb76908279a9374332735ab13f2f2d33101764736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0xB SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x3E SWAP3 SWAP2 SWAP1 PUSH3 0x17E JUMP JUMPDEST POP CALLVALUE DUP1 ISZERO PUSH3 0x4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078666600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x0 DUP1 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xCA SWAP3 SWAP2 SWAP1 PUSH3 0x17E JUMP JUMPDEST POP PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH1 0x5 PUSH1 0x0 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP PUSH3 0x224 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x1C1 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x1F2 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x1F2 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x1F1 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x1D4 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x201 SWAP2 SWAP1 PUSH3 0x205 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x220 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x206 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x39B1 DUP1 PUSH3 0x234 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7CD96EE4 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xCF11FF5D GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE211B8A5 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE211B8A5 EQ PUSH2 0x188A JUMPI DUP1 PUSH4 0xEB861F69 EQ PUSH2 0x18A1 JUMPI DUP1 PUSH4 0xF07DA229 EQ PUSH2 0x1927 JUMPI DUP1 PUSH4 0xF5AFA9C1 EQ PUSH2 0x1971 JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0xCF11FF5D EQ PUSH2 0x16B7 JUMPI DUP1 PUSH4 0xD6FE9778 EQ PUSH2 0x175D JUMPI DUP1 PUSH4 0xD73CA0AC EQ PUSH2 0x17E3 JUMPI DUP1 PUSH4 0xD826F88F EQ PUSH2 0x1873 JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0xAA788C55 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xAA788C55 EQ PUSH2 0x1475 JUMPI DUP1 PUSH4 0xAF21AC78 EQ PUSH2 0x14FB JUMPI DUP1 PUSH4 0xB3901F29 EQ PUSH2 0x1536 JUMPI DUP1 PUSH4 0xC6EE167F EQ PUSH2 0x15DC JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0x7CD96EE4 EQ PUSH2 0x11A9 JUMPI DUP1 PUSH4 0x87ABAB65 EQ PUSH2 0x1239 JUMPI DUP1 PUSH4 0x9A1DC86B EQ PUSH2 0x12BF JUMPI DUP1 PUSH4 0x9EAEED75 EQ PUSH2 0x139A JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0x586984A4 GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x67AAD04A GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x67AAD04A EQ PUSH2 0x1015 JUMPI DUP1 PUSH4 0x682B4797 EQ PUSH2 0x1040 JUMPI DUP1 PUSH4 0x68AB6F2F EQ PUSH2 0x1091 JUMPI DUP1 PUSH4 0x6F400756 EQ PUSH2 0x1117 JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0x586984A4 EQ PUSH2 0xD1D JUMPI DUP1 PUSH4 0x58CBC025 EQ PUSH2 0xDB7 JUMPI DUP1 PUSH4 0x5A3855AB EQ PUSH2 0xEA8 JUMPI DUP1 PUSH4 0x61936594 EQ PUSH2 0xF3A JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0x2ED238DC GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x2ED238DC EQ PUSH2 0xC04 JUMPI DUP1 PUSH4 0x36FF0EE5 EQ PUSH2 0xC2F JUMPI DUP1 PUSH4 0x3956DC6B EQ PUSH2 0xC6C JUMPI DUP1 PUSH4 0x4937C4F6 EQ PUSH2 0xC83 JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0xA20119F EQ PUSH2 0xAC3 JUMPI DUP1 PUSH4 0x122AEA81 EQ PUSH2 0xAEE JUMPI DUP1 PUSH4 0x21FED4D6 EQ PUSH2 0xB7E JUMPI PUSH2 0x1DD JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD SWAP1 POP PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1F0 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x231 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x31D JUMPI PUSH1 0x3 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x30E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2E3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x30E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2F1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 DUP2 GT ISZERO PUSH2 0x329 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x36A JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x379 JUMPI PUSH2 0x378 PUSH2 0x1A01 JUMP JUMPDEST JUMPDEST PUSH1 0x60 PUSH1 0x2 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x437 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x40C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x437 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x41A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD EQ ISZERO PUSH2 0x746 JUMPI PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x455 JUMPI INVALID JUMPDEST PUSH1 0x6 PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x4BF JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x8 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x5C5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x59A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5C5 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5A8 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 DUP2 GT ISZERO PUSH2 0x5E0 JUMPI INVALID JUMPDEST PUSH1 0x6 PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x64A JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x659 JUMPI PUSH2 0x658 PUSH2 0x1A01 JUMP JUMPDEST JUMPDEST PUSH1 0x7 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x73E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x713 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x73E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x721 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST PUSH1 0x0 DUP2 MLOAD EQ ISZERO PUSH2 0x912 JUMPI PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x75D JUMPI INVALID JUMPDEST PUSH1 0xA PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x778 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x83E JUMPI PUSH1 0xC PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x82F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x804 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x82F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x812 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 DUP2 GT ISZERO PUSH2 0x84A JUMPI INVALID JUMPDEST PUSH1 0xA PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x865 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x874 JUMPI PUSH2 0x873 PUSH2 0x1A01 JUMP JUMPDEST JUMPDEST PUSH1 0xB DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x90A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8DF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x90A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8ED JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST PUSH1 0x60 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x186A0 DUP5 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP 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 SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0x58CBC02500000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0xA44 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0xA21 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 DUP8 DUP8 CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xAA7 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 0xAAC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 DUP2 MLOAD EQ PUSH2 0xABB JUMPI INVALID JUMPDEST DUP2 MLOAD DUP3 PUSH1 0x20 ADD RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xACF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAD8 PUSH2 0x1A26 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB03 PUSH2 0x1A30 JUMP JUMPDEST 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 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB43 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xB28 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xB70 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 CALLVALUE DUP1 ISZERO PUSH2 0xB8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC02 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1A56 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC19 PUSH2 0x1AF0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC6A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1B30 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC81 PUSH2 0x1B5B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD07 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xCC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xCF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1B81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDA1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1C3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xEA6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xE20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x1C96 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF38 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xECB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xEE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xEFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xF1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1E3D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1013 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xF5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xF7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xFAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xFCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xFE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1003 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1EAF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1021 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102A PUSH2 0x1F47 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1F6B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x109D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1115 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x10D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1F95 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1123 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x113A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x118B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2067 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11BE PUSH2 0x20D9 JUMP JUMPDEST 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 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11FE JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x11E3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x122B 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 CALLVALUE DUP1 ISZERO PUSH2 0x1245 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x125C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x128B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x12AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2112 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1398 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x12E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x12FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1354 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x214C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1473 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x13BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x13DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x13EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x140E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x142F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2281 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x14B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x14C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x14E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2353 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1534 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x151E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2425 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1542 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15DA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1588 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x15AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2439 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x15FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x161C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x162E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1650 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1683 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x16A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x24AA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x175B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x16F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1709 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x172B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2542 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17E1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1780 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x179D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x17AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x17D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x25B3 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1871 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1806 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1823 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1835 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1857 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2604 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x187F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1888 PUSH2 0x265F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1896 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x189F PUSH2 0x2EDC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1925 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x18E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x18F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1915 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2F28 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x193C PUSH2 0x300C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x197D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x19B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x19C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x19E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3030 JUMP JUMPDEST STOP JUMPDEST JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x1A24 JUMPI PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 PUSH1 0xC0 PUSH1 0x0 DUP1 PUSH1 0x6 PUSH2 0x7D0 GAS SUB CALL SWAP1 POP POP PUSH2 0x1A02 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0xD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1A9A JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH2 0x1AEC DUP3 DUP3 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x308B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078666600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1B3E JUMPI PUSH1 0x0 PUSH2 0x1B41 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1B57 PUSH2 0x1B52 DUP3 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x31D1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1B7A JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1BD1 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x9 PUSH1 0x0 PUSH1 0xE SLOAD DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x4 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 PUSH1 0xE SLOAD DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1D1A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3951 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x9 PUSH1 0x0 PUSH1 0xE SLOAD DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x4 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 PUSH1 0xE SLOAD DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1DE2 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x1DBF 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 SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1E4B JUMPI PUSH1 0x0 PUSH2 0x1E4E JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1EA9 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x1EA4 DUP4 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x329D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1F41 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x329D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x1F92 PUSH2 0x1F8D DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x31D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FE4 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x2 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2054 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH2 0x2062 DUP2 PUSH2 0x33B3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x2075 JUMPI PUSH1 0x0 PUSH2 0x2078 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x20D3 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x20CE DUP4 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x35B8 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078666600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2131 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0xC SWAP2 SWAP1 PUSH2 0x2147 SWAP3 SWAP2 SWAP1 PUSH2 0x36AC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x219B DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x220B JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP3 DUP3 PUSH1 0x8 PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP2 SWAP1 PUSH2 0x2270 SWAP3 SWAP2 SWAP1 PUSH2 0x36AC JUMP JUMPDEST POP PUSH2 0x227A DUP2 PUSH2 0x33B3 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x22C4 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP2 SWAP1 PUSH2 0x22FF SWAP3 SWAP2 SWAP1 PUSH2 0x36AC JUMP JUMPDEST POP PUSH2 0x234D DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x308B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x23A2 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2412 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH2 0x2420 DUP2 PUSH2 0x33B3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x2436 PUSH2 0x2431 DUP3 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x31D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x24A5 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x24A0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x329D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x253C DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x35B8 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x25AE DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x25A9 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x35B8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x2600 DUP3 DUP3 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x31D1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x265A DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x2655 DUP4 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x329D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2727 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x26FC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2727 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x270A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078666600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 EQ PUSH2 0x2A15 JUMPI PUSH1 0x0 PUSH1 0x1 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x27B6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x2793 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 SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2804 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x2 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x284F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x282C 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 SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2895 SWAP3 SWAP2 SWAP1 PUSH2 0x372C JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x3 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x28DC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x28B9 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 SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2922 SWAP3 SWAP2 SWAP1 PUSH2 0x37AC JUMP JUMPDEST POP PUSH1 0x0 DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x29C9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x299E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x29C9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x29AC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2A05 SWAP3 SWAP2 SWAP1 PUSH2 0x372C JUMP JUMPDEST POP DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x273B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078666600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x0 DUP1 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2A90 SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL SWAP1 POP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ PUSH2 0x2DB4 JUMPI PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2BED JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x7 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2C66 SWAP3 SWAP2 SWAP1 PUSH2 0x372C JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x8 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2CDB SWAP3 SWAP2 SWAP1 PUSH2 0x37AC JUMP JUMPDEST POP PUSH1 0x5 PUSH1 0x0 DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL SWAP2 POP PUSH1 0x0 PUSH1 0xE0 SHL PUSH1 0x5 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP POP PUSH2 0x2B15 JUMP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH1 0x5 PUSH1 0x0 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0xB SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2E99 SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2EB9 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0xD DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0xE PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2EFB JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0xC SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2F25 SWAP3 SWAP2 SWAP1 PUSH2 0x37AC JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 DUP1 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2F6B JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x3 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2FBA SWAP3 SWAP2 SWAP1 PUSH2 0x37AC JUMP JUMPDEST POP PUSH2 0x3008 DUP3 DUP3 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x308B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x3086 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x3081 DUP4 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x35B8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 POP EQ ISZERO PUSH2 0x3172 JUMPI PUSH1 0x0 DUP1 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH2 0x3129 SWAP3 SWAP2 SWAP1 PUSH2 0x38AC JUMP JUMPDEST POP DUP2 PUSH1 0x0 DUP1 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x3170 SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x31C3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 PUSH1 0x20 DUP3 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x31F0 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0xB SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x320B SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x3293 JUMPI PUSH1 0x8 DUP2 MUL PUSH1 0xFF PUSH1 0xF8 SHL DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3233 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL AND PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SHR DUP3 OR SWAP2 POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x3215 JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x32D5 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x32B2 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 SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3323 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x2 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x335F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x333C 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 SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x33A5 SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP PUSH2 0x33AF DUP3 PUSH2 0x308B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 SHL PUSH1 0x5 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ ISZERO PUSH2 0x35B5 JUMPI PUSH1 0x5 PUSH1 0x0 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL PUSH1 0x5 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x5 PUSH1 0x0 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35C3 DUP4 PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3633 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP2 PUSH1 0x7 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x369D SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP PUSH2 0x36A7 DUP2 PUSH2 0x33B3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x36ED JUMPI DUP1 CALLDATALOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x371B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x371B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x371A JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x36FF JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x3728 SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x376D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x379B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x379B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x379A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x377F JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x37A8 SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x37ED JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x381B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x381B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x381A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x37FF JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x3828 SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x386D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x389B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x389B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x389A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x387F JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x38A8 SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x38E5 JUMPI DUP1 SLOAD DUP6 SSTORE PUSH2 0x3922 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3922 JUMPI PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3921 JUMPI DUP3 SLOAD DUP3 SSTORE SWAP2 PUSH1 0x1 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3906 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x392F SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x394C JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x3934 JUMP JUMPDEST POP SWAP1 JUMP INVALID NUMBER PUSH2 0x6E20 PUSH16 0x6E6C792062652063616C6C6564206672 PUSH16 0x6D2074686520636F6E74726163742069 PUSH21 0x73656C66A2646970667358221220E7CE62DD68BC07 SWAP13 PUSH13 0x25C9E19CE1EB76908279A93743 ORIGIN PUSH20 0x5AB13F2F2D33101764736F6C634300060C003300 ",
              "sourceMap": "3610:9492:0:-:0;;;3985:5;3974:17;;;;;;;;;;;;;;;;;;;;;;;;;;;4554:50;;;;;;;;;;;;;:::i;:::-;;4676:135;;;;;;;;;;4735:14;;;;;;;;;;;;;;;;;4701:13;:31;4715:16;4701:31;;;;;;;;;;;:48;;;;;;;;;;;;:::i;:::-;;4789:18;4753:13;:33;4767:18;4753:33;;;;;;;;;;;;;;;;;;:54;;;;;;;;;;;;;;;;;;3610:9492;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;"
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600436106101dc5760003560e01c80637cd96ee411610102578063cf11ff5d11610095578063e211b8a511610064578063e211b8a51461188a578063eb861f69146118a1578063f07da22914611927578063f5afa9c114611971576101dd565b8063cf11ff5d146116b7578063d6fe97781461175d578063d73ca0ac146117e3578063d826f88f14611873576101dd565b8063aa788c55116100d1578063aa788c5514611475578063af21ac78146114fb578063b3901f2914611536578063c6ee167f146115dc576101dd565b80637cd96ee4146111a957806387abab65146112395780639a1dc86b146112bf5780639eaeed751461139a576101dd565b8063586984a41161017a57806367aad04a1161014957806367aad04a14611015578063682b47971461104057806368ab6f2f146110915780636f40075614611117576101dd565b8063586984a414610d1d57806358cbc02514610db75780635a3855ab14610ea85780636193659414610f3a576101dd565b80632ed238dc116101b65780632ed238dc14610c0457806336ff0ee514610c2f5780633956dc6b14610c6c5780634937c4f614610c83576101dd565b80630a20119f14610ac3578063122aea8114610aee57806321fed4d614610b7e576101dd565b5b600080359050600160028111156101f057fe5b6001600036604051808383808284378083019250505092505050908152602001604051809103902060009054906101000a900460ff16600281111561023157fe5b141561031d57600360003660405180838380828437808301925050509250505090815260200160405180910390206040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561030e5780601f106102e35761010080835404028352916020019161030e565b820191906000526020600020905b8154815290600101906020018083116102f157829003601f168201915b50509250505060405180910390fd5b60028081111561032957fe5b6001600036604051808383808284378083019250505092505050908152602001604051809103902060009054906101000a900460ff16600281111561036a57fe5b141561037957610378611a01565b5b6060600260003660405180838380828437808301925050509250505090815260200160405180910390208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104375780601f1061040c57610100808354040283529160200191610437565b820191906000526020600020905b81548152906001019060200180831161041a57829003601f168201915b50505050509050600081511415610746576001600281111561045557fe5b60066000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff1660028111156104bf57fe5b14156105d45760086000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000206040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156105c55780601f1061059a576101008083540402835291602001916105c5565b820191906000526020600020905b8154815290600101906020018083116105a857829003601f168201915b50509250505060405180910390fd5b6002808111156105e057fe5b60066000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff16600281111561064a57fe5b141561065957610658611a01565b5b60076000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561073e5780601f106107135761010080835404028352916020019161073e565b820191906000526020600020905b81548152906001019060200180831161072157829003601f168201915b505050505090505b600081511415610912576001600281111561075d57fe5b600a60009054906101000a900460ff16600281111561077857fe5b141561083e57600c6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561082f5780601f106108045761010080835404028352916020019161082f565b820191906000526020600020905b81548152906001019060200180831161081257829003601f168201915b50509250505060405180910390fd5b60028081111561084a57fe5b600a60009054906101000a900460ff16600281111561086557fe5b141561087457610873611a01565b5b600b8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561090a5780601f106108df5761010080835404028352916020019161090a565b820191906000526020600020905b8154815290600101906020018083116108ed57829003601f168201915b505050505090505b60603073ffffffffffffffffffffffffffffffffffffffff16620186a08460003660405160240180847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509450505050506040516020818303038152906040527f58cbc025000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610a445780518252602082019150602081019050602083039250610a21565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d8060008114610aa7576040519150601f19603f3d011682016040523d82523d6000602084013e610aac565b606091505b509150506000815114610abb57fe5b815182602001f35b348015610acf57600080fd5b50610ad8611a26565b6040518082815260200191505060405180910390f35b348015610afa57600080fd5b50610b03611a30565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b43578082015181840152602081019050610b28565b50505050905090810190601f168015610b705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b8a57600080fd5b50610c0260048036036020811015610ba157600080fd5b8101908080359060200190640100000000811115610bbe57600080fd5b820183602082011115610bd057600080fd5b80359060200191846001830284011164010000000083111715610bf257600080fd5b9091929391929390505050611a56565b005b348015610c1057600080fd5b50610c19611af0565b6040518082815260200191505060405180910390f35b348015610c3b57600080fd5b50610c6a60048036036020811015610c5257600080fd5b81019080803515159060200190929190505050611b30565b005b348015610c7857600080fd5b50610c81611b5b565b005b348015610c8f57600080fd5b50610d0760048036036020811015610ca657600080fd5b8101908080359060200190640100000000811115610cc357600080fd5b820183602082011115610cd557600080fd5b80359060200191846001830284011164010000000083111715610cf757600080fd5b9091929391929390505050611b81565b6040518082815260200191505060405180910390f35b348015610d2957600080fd5b50610da160048036036020811015610d4057600080fd5b8101908080359060200190640100000000811115610d5d57600080fd5b820183602082011115610d6f57600080fd5b80359060200191846001830284011164010000000083111715610d9157600080fd5b9091929391929390505050611c3f565b6040518082815260200191505060405180910390f35b348015610dc357600080fd5b50610ea660048036036040811015610dda57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919080359060200190640100000000811115610e2057600080fd5b820183602082011115610e3257600080fd5b80359060200191846001830284011164010000000083111715610e5457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611c96565b005b348015610eb457600080fd5b50610f3860048036036040811015610ecb57600080fd5b8101908080359060200190640100000000811115610ee857600080fd5b820183602082011115610efa57600080fd5b80359060200191846001830284011164010000000083111715610f1c57600080fd5b9091929391929390803515159060200190929190505050611e3d565b005b348015610f4657600080fd5b5061101360048036036040811015610f5d57600080fd5b8101908080359060200190640100000000811115610f7a57600080fd5b820183602082011115610f8c57600080fd5b80359060200191846001830284011164010000000083111715610fae57600080fd5b909192939192939080359060200190640100000000811115610fcf57600080fd5b820183602082011115610fe157600080fd5b8035906020019184600183028401116401000000008311171561100357600080fd5b9091929391929390505050611eaf565b005b34801561102157600080fd5b5061102a611f47565b6040518082815260200191505060405180910390f35b34801561104c57600080fd5b5061108f6004803603602081101561106357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f6b565b005b34801561109d57600080fd5b50611115600480360360208110156110b457600080fd5b81019080803590602001906401000000008111156110d157600080fd5b8201836020820111156110e357600080fd5b8035906020019184600183028401116401000000008311171561110557600080fd5b9091929391929390505050611f95565b005b34801561112357600080fd5b506111a76004803603604081101561113a57600080fd5b810190808035906020019064010000000081111561115757600080fd5b82018360208201111561116957600080fd5b8035906020019184600183028401116401000000008311171561118b57600080fd5b9091929391929390803515159060200190929190505050612067565b005b3480156111b557600080fd5b506111be6120d9565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156111fe5780820151818401526020810190506111e3565b50505050905090810190601f16801561122b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561124557600080fd5b506112bd6004803603602081101561125c57600080fd5b810190808035906020019064010000000081111561127957600080fd5b82018360208201111561128b57600080fd5b803590602001918460018302840111640100000000831117156112ad57600080fd5b9091929391929390505050612112565b005b3480156112cb57600080fd5b50611398600480360360408110156112e257600080fd5b81019080803590602001906401000000008111156112ff57600080fd5b82018360208201111561131157600080fd5b8035906020019184600183028401116401000000008311171561133357600080fd5b90919293919293908035906020019064010000000081111561135457600080fd5b82018360208201111561136657600080fd5b8035906020019184600183028401116401000000008311171561138857600080fd5b909192939192939050505061214c565b005b3480156113a657600080fd5b50611473600480360360408110156113bd57600080fd5b81019080803590602001906401000000008111156113da57600080fd5b8201836020820111156113ec57600080fd5b8035906020019184600183028401116401000000008311171561140e57600080fd5b90919293919293908035906020019064010000000081111561142f57600080fd5b82018360208201111561144157600080fd5b8035906020019184600183028401116401000000008311171561146357600080fd5b9091929391929390505050612281565b005b34801561148157600080fd5b506114f96004803603602081101561149857600080fd5b81019080803590602001906401000000008111156114b557600080fd5b8201836020820111156114c757600080fd5b803590602001918460018302840111640100000000831117156114e957600080fd5b9091929391929390505050612353565b005b34801561150757600080fd5b506115346004803603602081101561151e57600080fd5b8101908080359060200190929190505050612425565b005b34801561154257600080fd5b506115da6004803603604081101561155957600080fd5b810190808035906020019064010000000081111561157657600080fd5b82018360208201111561158857600080fd5b803590602001918460018302840111640100000000831117156115aa57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612439565b005b3480156115e857600080fd5b506116b5600480360360408110156115ff57600080fd5b810190808035906020019064010000000081111561161c57600080fd5b82018360208201111561162e57600080fd5b8035906020019184600183028401116401000000008311171561165057600080fd5b90919293919293908035906020019064010000000081111561167157600080fd5b82018360208201111561168357600080fd5b803590602001918460018302840111640100000000831117156116a557600080fd5b90919293919293905050506124aa565b005b3480156116c357600080fd5b5061175b600480360360408110156116da57600080fd5b81019080803590602001906401000000008111156116f757600080fd5b82018360208201111561170957600080fd5b8035906020019184600183028401116401000000008311171561172b57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612542565b005b34801561176957600080fd5b506117e16004803603602081101561178057600080fd5b810190808035906020019064010000000081111561179d57600080fd5b8201836020820111156117af57600080fd5b803590602001918460018302840111640100000000831117156117d157600080fd5b90919293919293905050506125b3565b005b3480156117ef57600080fd5b506118716004803603604081101561180657600080fd5b810190808035906020019064010000000081111561182357600080fd5b82018360208201111561183557600080fd5b8035906020019184600183028401116401000000008311171561185757600080fd5b909192939192939080359060200190929190505050612604565b005b34801561187f57600080fd5b5061188861265f565b005b34801561189657600080fd5b5061189f612edc565b005b3480156118ad57600080fd5b50611925600480360360208110156118c457600080fd5b81019080803590602001906401000000008111156118e157600080fd5b8201836020820111156118f357600080fd5b8035906020019184600183028401116401000000008311171561191557600080fd5b9091929391929390505050612f28565b005b34801561193357600080fd5b5061193c61300c565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561197d57600080fd5b506119ff6004803603604081101561199457600080fd5b81019080803590602001906401000000008111156119b157600080fd5b8201836020820111156119c357600080fd5b803590602001918460018302840111640100000000831117156119e557600080fd5b909192939192939080359060200190929190505050613030565b005b5b600115611a245760006060600060c060008060066107d05a03f1905050611a02565b565b6000600d54905090565b600060405160200180821515815260200191505060405160208183030381529060405281565b600260018383604051808383808284378083019250505092505050908152602001604051809103902060006101000a81548160ff02191690836002811115611a9a57fe5b0217905550611aec82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061308b565b5050565b6040518060400160405280600481526020017f30786666000000000000000000000000000000000000000000000000000000008152508051906020012081565b600081611b3e576000611b41565b60015b60ff169050611b57611b5282613176565b6131d1565b5050565b6002600a60006101000a81548160ff02191690836002811115611b7a57fe5b0217905550565b600080611bd184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061320f565b905060096000600e548360405160200180838152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600401925050506040516020818303038152906040528051906020012081526020019081526020016000205491505092915050565b600060046000600e5485856040516020018084815260200183838082843780830192505050935050505060405160208183030381529060405280519060200120815260200190815260200160002054905092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613951602b913960400191505060405180910390fd5b6001600d60008282540192505081905550600160096000600e548560405160200180838152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526004019250505060405160208183030381529060405280519060200120815260200190815260200160002060008282540192505081905550600160046000600e54846040516020018083815260200182805190602001908083835b60208310611de25780518252602082019150602081019050602083039250611dbf565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052805190602001208152602001908152602001600020600082825401925050819055505050565b600081611e4b576000611e4e565b60015b60ff169050611ea984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611ea483613176565b61329d565b50505050565b611f4184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061329d565b50505050565b7f010000000000000000000000000000000000000000000000000000000000000081565b611f92611f8d8273ffffffffffffffffffffffffffffffffffffffff16613176565b6131d1565b50565b6000611fe483838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061320f565b9050600260066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083600281111561205457fe5b0217905550612062816133b3565b505050565b600081612075576000612078565b60015b60ff1690506120d384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506120ce83613176565b6135b8565b50505050565b6040518060400160405280600481526020017f307866660000000000000000000000000000000000000000000000000000000081525081565b6001600a60006101000a81548160ff0219169083600281111561213157fe5b02179055508181600c91906121479291906136ac565b505050565b600061219b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061320f565b9050600160066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083600281111561220b57fe5b0217905550828260086000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002091906122709291906136ac565b5061227a816133b3565b5050505050565b6001808585604051808383808284378083019250505092505050908152602001604051809103902060006101000a81548160ff021916908360028111156122c457fe5b0217905550818160038686604051808383808284378083019250505092505050908152602001604051809103902091906122ff9291906136ac565b5061234d84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061308b565b50505050565b60006123a283838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061320f565b9050600160066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083600281111561241257fe5b0217905550612420816133b3565b505050565b61243661243182613176565b6131d1565b50565b6124a583838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506124a08373ffffffffffffffffffffffffffffffffffffffff16613176565b61329d565b505050565b61253c84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506135b8565b50505050565b6125ae83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506125a98373ffffffffffffffffffffffffffffffffffffffff16613176565b6135b8565b505050565b61260082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506131d1565b5050565b61265a83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061265583613176565b61329d565b505050565b60606000807f010000000000000000000000000000000000000000000000000000000000000081526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156127275780601f106126fc57610100808354040283529160200191612727565b820191906000526020600020905b81548152906001019060200180831161270a57829003601f168201915b505050505090506000818051906020012090505b6040518060400160405280600481526020017f3078666600000000000000000000000000000000000000000000000000000000815250805190602001208114612a155760006001836040518082805190602001908083835b602083106127b65780518252602082019150602081019050602083039250612793565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548160ff0219169083600281111561280457fe5b0217905550604051806020016040528060008152506002836040518082805190602001908083835b6020831061284f578051825260208201915060208101905060208303925061282c565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020908051906020019061289592919061372c565b50604051806020016040528060008152506003836040518082805190602001908083835b602083106128dc57805182526020820191506020810190506020830392506128b9565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902090805190602001906129229291906137ac565b506000808281526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129c95780601f1061299e576101008083540402835291602001916129c9565b820191906000526020600020905b8154815290600101906020018083116129ac57829003601f168201915b50505050509150604051806020016040528060008152506000808381526020019081526020016000209080519060200190612a0592919061372c565b508180519060200120905061273b565b6040518060400160405280600481526020017f30786666000000000000000000000000000000000000000000000000000000008152506000807f010000000000000000000000000000000000000000000000000000000000000081526020019081526020016000209080519060200190612a9092919061382c565b506000600560007f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460e01b90505b7f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612db4576000819050600060066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690836002811115612bed57fe5b02179055506040518060200160405280600081525060076000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000209080519060200190612c6692919061372c565b506040518060200160405280600081525060086000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000209080519060200190612cdb9291906137ac565b5060056000827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460e01b9150600060e01b60056000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548163ffffffff021916908360e01c021790555050612b15565b7f0100000000000000000000000000000000000000000000000000000000000000600560007f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548163ffffffff021916908360e01c02179055506000604051602001808215158152602001915050604051602081830303815290604052600b9080519060200190612e9992919061382c565b506000600a60006101000a81548160ff02191690836002811115612eb957fe5b02179055506000600d819055506001600e60008282540192505081905550505050565b6001600a60006101000a81548160ff02191690836002811115612efb57fe5b021790555060405180602001604052806000815250600c9080519060200190612f259291906137ac565b50565b6001808383604051808383808284378083019250505092505050908152602001604051809103902060006101000a81548160ff02191690836002811115612f6b57fe5b0217905550604051806020016040528060008152506003838360405180838380828437808301925050509250505090815260200160405180910390209080519060200190612fba9291906137ac565b5061300882828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061308b565b5050565b7f010000000000000000000000000000000000000000000000000000000000000081565b61308683838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061308183613176565b6135b8565b505050565b60008180519060200120905060008060008381526020019081526020016000208054600181600116156101000203166002900490501415613172576000807f0100000000000000000000000000000000000000000000000000000000000000815260200190815260200160002060008083815260200190815260200160002090805460018160011615610100020316600290046131299291906138ac565b50816000807f01000000000000000000000000000000000000000000000000000000000000008152602001908152602001600020908051906020019061317092919061382c565b505b5050565b6060602067ffffffffffffffff8111801561319057600080fd5b506040519080825280601f01601f1916602001820160405280156131c35781602001600182028036833780820191505090505b509050816020820152919050565b6000600a60006101000a81548160ff021916908360028111156131f057fe5b021790555080600b908051906020019061320b92919061382c565b5050565b60008060005b6004811015613293576008810260ff60f81b85838151811061323357fe5b602001015160f81c60f81b167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c821791508080600101915050613215565b5080915050919050565b60006001836040518082805190602001908083835b602083106132d557805182526020820191506020810190506020830392506132b2565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548160ff0219169083600281111561332357fe5b0217905550806002836040518082805190602001908083835b6020831061335f578051825260208201915060208101905060208303925061333c565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902090805190602001906133a592919061382c565b506133af8261308b565b5050565b600060e01b60056000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156135b557600560007f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460e01b60056000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548163ffffffff021916908360e01c021790555080600560007f01000000000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548163ffffffff021916908360e01c02179055505b50565b60006135c38361320f565b9050600060066000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff0219169083600281111561363357fe5b02179055508160076000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020908051906020019061369d92919061382c565b506136a7816133b3565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106136ed57803560ff191683800117855561371b565b8280016001018555821561371b579182015b8281111561371a5782358255916020019190600101906136ff565b5b5090506137289190613933565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061376d57805160ff191683800117855561379b565b8280016001018555821561379b579182015b8281111561379a57825182559160200191906001019061377f565b5b5090506137a89190613933565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106137ed57805160ff191683800117855561381b565b8280016001018555821561381b579182015b8281111561381a5782518255916020019190600101906137ff565b5b5090506138289190613933565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061386d57805160ff191683800117855561389b565b8280016001018555821561389b579182015b8281111561389a57825182559160200191906001019061387f565b5b5090506138a89190613933565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106138e55780548555613922565b8280016001018555821561392257600052602060002091601f016020900482015b82811115613921578254825591600101919060010190613906565b5b50905061392f9190613933565b5090565b5b8082111561394c576000816000905550600101613934565b509056fe43616e206f6e6c792062652063616c6c65642066726f6d2074686520636f6e747261637420697473656c66a2646970667358221220e7ce62dd68bc079c6c25c9e19ce1eb76908279a9374332735ab13f2f2d33101764736f6c634300060c0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7CD96EE4 GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xCF11FF5D GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE211B8A5 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE211B8A5 EQ PUSH2 0x188A JUMPI DUP1 PUSH4 0xEB861F69 EQ PUSH2 0x18A1 JUMPI DUP1 PUSH4 0xF07DA229 EQ PUSH2 0x1927 JUMPI DUP1 PUSH4 0xF5AFA9C1 EQ PUSH2 0x1971 JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0xCF11FF5D EQ PUSH2 0x16B7 JUMPI DUP1 PUSH4 0xD6FE9778 EQ PUSH2 0x175D JUMPI DUP1 PUSH4 0xD73CA0AC EQ PUSH2 0x17E3 JUMPI DUP1 PUSH4 0xD826F88F EQ PUSH2 0x1873 JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0xAA788C55 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xAA788C55 EQ PUSH2 0x1475 JUMPI DUP1 PUSH4 0xAF21AC78 EQ PUSH2 0x14FB JUMPI DUP1 PUSH4 0xB3901F29 EQ PUSH2 0x1536 JUMPI DUP1 PUSH4 0xC6EE167F EQ PUSH2 0x15DC JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0x7CD96EE4 EQ PUSH2 0x11A9 JUMPI DUP1 PUSH4 0x87ABAB65 EQ PUSH2 0x1239 JUMPI DUP1 PUSH4 0x9A1DC86B EQ PUSH2 0x12BF JUMPI DUP1 PUSH4 0x9EAEED75 EQ PUSH2 0x139A JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0x586984A4 GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x67AAD04A GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x67AAD04A EQ PUSH2 0x1015 JUMPI DUP1 PUSH4 0x682B4797 EQ PUSH2 0x1040 JUMPI DUP1 PUSH4 0x68AB6F2F EQ PUSH2 0x1091 JUMPI DUP1 PUSH4 0x6F400756 EQ PUSH2 0x1117 JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0x586984A4 EQ PUSH2 0xD1D JUMPI DUP1 PUSH4 0x58CBC025 EQ PUSH2 0xDB7 JUMPI DUP1 PUSH4 0x5A3855AB EQ PUSH2 0xEA8 JUMPI DUP1 PUSH4 0x61936594 EQ PUSH2 0xF3A JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0x2ED238DC GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x2ED238DC EQ PUSH2 0xC04 JUMPI DUP1 PUSH4 0x36FF0EE5 EQ PUSH2 0xC2F JUMPI DUP1 PUSH4 0x3956DC6B EQ PUSH2 0xC6C JUMPI DUP1 PUSH4 0x4937C4F6 EQ PUSH2 0xC83 JUMPI PUSH2 0x1DD JUMP JUMPDEST DUP1 PUSH4 0xA20119F EQ PUSH2 0xAC3 JUMPI DUP1 PUSH4 0x122AEA81 EQ PUSH2 0xAEE JUMPI DUP1 PUSH4 0x21FED4D6 EQ PUSH2 0xB7E JUMPI PUSH2 0x1DD JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP1 CALLDATALOAD SWAP1 POP PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1F0 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x231 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x31D JUMPI PUSH1 0x3 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x30E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2E3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x30E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2F1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 DUP2 GT ISZERO PUSH2 0x329 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x36A JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x379 JUMPI PUSH2 0x378 PUSH2 0x1A01 JUMP JUMPDEST JUMPDEST PUSH1 0x60 PUSH1 0x2 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x437 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x40C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x437 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x41A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 MLOAD EQ ISZERO PUSH2 0x746 JUMPI PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x455 JUMPI INVALID JUMPDEST PUSH1 0x6 PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x4BF JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x8 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x5C5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x59A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5C5 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5A8 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 DUP2 GT ISZERO PUSH2 0x5E0 JUMPI INVALID JUMPDEST PUSH1 0x6 PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x64A JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x659 JUMPI PUSH2 0x658 PUSH2 0x1A01 JUMP JUMPDEST JUMPDEST PUSH1 0x7 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x73E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x713 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x73E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x721 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST PUSH1 0x0 DUP2 MLOAD EQ ISZERO PUSH2 0x912 JUMPI PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x75D JUMPI INVALID JUMPDEST PUSH1 0xA PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x778 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x83E JUMPI PUSH1 0xC PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x82F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x804 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x82F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x812 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 DUP2 GT ISZERO PUSH2 0x84A JUMPI INVALID JUMPDEST PUSH1 0xA PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x865 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x874 JUMPI PUSH2 0x873 PUSH2 0x1A01 JUMP JUMPDEST JUMPDEST PUSH1 0xB DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x90A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8DF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x90A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8ED JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST PUSH1 0x60 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x186A0 DUP5 PUSH1 0x0 CALLDATASIZE PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP 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 SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH32 0x58CBC02500000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 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 0xA44 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0xA21 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 DUP8 DUP8 CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xAA7 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 0xAAC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 DUP2 MLOAD EQ PUSH2 0xABB JUMPI INVALID JUMPDEST DUP2 MLOAD DUP3 PUSH1 0x20 ADD RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xACF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAD8 PUSH2 0x1A26 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB03 PUSH2 0x1A30 JUMP JUMPDEST 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 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB43 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xB28 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xB70 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 CALLVALUE DUP1 ISZERO PUSH2 0xB8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC02 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1A56 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC19 PUSH2 0x1AF0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC6A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1B30 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC81 PUSH2 0x1B5B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD07 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xCC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xCD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xCF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1B81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD29 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDA1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xD91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1C3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xEA6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xE20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xE32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x1C96 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF38 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xECB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xEE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xEFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xF1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1E3D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1013 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xF5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xF7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xFAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xFCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xFE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1003 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1EAF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1021 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102A PUSH2 0x1F47 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1F6B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x109D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1115 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x10D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x1F95 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1123 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11A7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x113A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x118B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2067 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11BE PUSH2 0x20D9 JUMP JUMPDEST 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 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11FE JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x11E3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x122B 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 CALLVALUE DUP1 ISZERO PUSH2 0x1245 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x12BD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x125C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x128B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x12AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2112 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1398 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x12E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x12FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1354 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x214C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1473 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x13BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x13DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x13EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x140E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x142F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1463 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2281 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x14B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x14C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x14E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2353 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1507 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1534 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x151E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2425 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1542 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15DA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1588 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x15AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2439 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x15FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x161C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x162E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1650 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1683 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x16A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x24AA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x175B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x16F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1709 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x172B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2542 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1769 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17E1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1780 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x179D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x17AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x17D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x25B3 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1871 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1806 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1823 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1835 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1857 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2604 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x187F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1888 PUSH2 0x265F JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1896 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x189F PUSH2 0x2EDC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x18AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1925 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x18E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x18F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1915 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2F28 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x193C PUSH2 0x300C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x197D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19FF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1994 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x19B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x19C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x19E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3030 JUMP JUMPDEST STOP JUMPDEST JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x1A24 JUMPI PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 PUSH1 0xC0 PUSH1 0x0 DUP1 PUSH1 0x6 PUSH2 0x7D0 GAS SUB CALL SWAP1 POP POP PUSH2 0x1A02 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0xD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x1 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1A9A JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH2 0x1AEC DUP3 DUP3 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x308B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078666600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1B3E JUMPI PUSH1 0x0 PUSH2 0x1B41 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1B57 PUSH2 0x1B52 DUP3 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x31D1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1B7A JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1BD1 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x9 PUSH1 0x0 PUSH1 0xE SLOAD DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x4 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 PUSH1 0xE SLOAD DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1D1A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3951 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x9 PUSH1 0x0 PUSH1 0xE SLOAD DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x4 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 PUSH1 0xE SLOAD DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x1DE2 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x1DBF 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 SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1E4B JUMPI PUSH1 0x0 PUSH2 0x1E4E JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x1EA9 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x1EA4 DUP4 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x329D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1F41 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x329D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x1F92 PUSH2 0x1F8D DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x31D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FE4 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x2 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2054 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH2 0x2062 DUP2 PUSH2 0x33B3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x2075 JUMPI PUSH1 0x0 PUSH2 0x2078 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0xFF AND SWAP1 POP PUSH2 0x20D3 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x20CE DUP4 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x35B8 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078666600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2131 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0xC SWAP2 SWAP1 PUSH2 0x2147 SWAP3 SWAP2 SWAP1 PUSH2 0x36AC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x219B DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x220B JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP3 DUP3 PUSH1 0x8 PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP2 SWAP1 PUSH2 0x2270 SWAP3 SWAP2 SWAP1 PUSH2 0x36AC JUMP JUMPDEST POP PUSH2 0x227A DUP2 PUSH2 0x33B3 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x22C4 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP2 DUP2 PUSH1 0x3 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP2 SWAP1 PUSH2 0x22FF SWAP3 SWAP2 SWAP1 PUSH2 0x36AC JUMP JUMPDEST POP PUSH2 0x234D DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x308B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x23A2 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2412 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH2 0x2420 DUP2 PUSH2 0x33B3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x2436 PUSH2 0x2431 DUP3 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x31D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x24A5 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x24A0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x329D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x253C DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x35B8 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x25AE DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x25A9 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x35B8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x2600 DUP3 DUP3 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x31D1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x265A DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x2655 DUP4 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x329D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2727 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x26FC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2727 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x270A JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078666600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 EQ PUSH2 0x2A15 JUMPI PUSH1 0x0 PUSH1 0x1 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x27B6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x2793 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 SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2804 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x2 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x284F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x282C 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 SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2895 SWAP3 SWAP2 SWAP1 PUSH2 0x372C JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x3 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x28DC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x28B9 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 SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2922 SWAP3 SWAP2 SWAP1 PUSH2 0x37AC JUMP JUMPDEST POP PUSH1 0x0 DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x29C9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x299E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x29C9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x29AC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x0 DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2A05 SWAP3 SWAP2 SWAP1 PUSH2 0x372C JUMP JUMPDEST POP DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x273B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078666600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x0 DUP1 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2A90 SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL SWAP1 POP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ PUSH2 0x2DB4 JUMPI PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2BED JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x7 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2C66 SWAP3 SWAP2 SWAP1 PUSH2 0x372C JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x8 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2CDB SWAP3 SWAP2 SWAP1 PUSH2 0x37AC JUMP JUMPDEST POP PUSH1 0x5 PUSH1 0x0 DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL SWAP2 POP PUSH1 0x0 PUSH1 0xE0 SHL PUSH1 0x5 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP POP PUSH2 0x2B15 JUMP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH1 0x5 PUSH1 0x0 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0xB SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2E99 SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2EB9 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0xD DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0xE PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2EFB JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0xC SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2F25 SWAP3 SWAP2 SWAP1 PUSH2 0x37AC JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 DUP1 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2F6B JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x3 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP1 DUP4 ADD SWAP3 POP POP POP SWAP3 POP POP POP SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x2FBA SWAP3 SWAP2 SWAP1 PUSH2 0x37AC JUMP JUMPDEST POP PUSH2 0x3008 DUP3 DUP3 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x308B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x3086 DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 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 POP POP POP POP PUSH2 0x3081 DUP4 PUSH2 0x3176 JUMP JUMPDEST PUSH2 0x35B8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 POP EQ ISZERO PUSH2 0x3172 JUMPI PUSH1 0x0 DUP1 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV PUSH2 0x3129 SWAP3 SWAP2 SWAP1 PUSH2 0x38AC JUMP JUMPDEST POP DUP2 PUSH1 0x0 DUP1 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x3170 SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP 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 0x31C3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 PUSH1 0x20 DUP3 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x31F0 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0xB SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x320B SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 JUMPDEST PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x3293 JUMPI PUSH1 0x8 DUP2 MUL PUSH1 0xFF PUSH1 0xF8 SHL DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3233 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL AND PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 SHR DUP3 OR SWAP2 POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x3215 JUMP JUMPDEST POP DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x32D5 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x32B2 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 SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3323 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x2 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x335F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x333C 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 SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x33A5 SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP PUSH2 0x33AF DUP3 PUSH2 0x308B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 SHL PUSH1 0x5 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ ISZERO PUSH2 0x35B5 JUMPI PUSH1 0x5 PUSH1 0x0 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL PUSH1 0x5 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x5 PUSH1 0x0 PUSH32 0x100000000000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35C3 DUP4 PUSH2 0x320F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x3633 JUMPI INVALID JUMPDEST MUL OR SWAP1 SSTORE POP DUP2 PUSH1 0x7 PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x369D SWAP3 SWAP2 SWAP1 PUSH2 0x382C JUMP JUMPDEST POP PUSH2 0x36A7 DUP2 PUSH2 0x33B3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x36ED JUMPI DUP1 CALLDATALOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x371B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x371B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x371A JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x36FF JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x3728 SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x376D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x379B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x379B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x379A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x377F JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x37A8 SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x37ED JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x381B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x381B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x381A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x37FF JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x3828 SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x386D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x389B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x389B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x389A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x387F JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x38A8 SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x38E5 JUMPI DUP1 SLOAD DUP6 SSTORE PUSH2 0x3922 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x3922 JUMPI PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x3921 JUMPI DUP3 SLOAD DUP3 SSTORE SWAP2 PUSH1 0x1 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3906 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x392F SWAP2 SWAP1 PUSH2 0x3933 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x394C JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x3934 JUMP JUMPDEST POP SWAP1 JUMP INVALID NUMBER PUSH2 0x6E20 PUSH16 0x6E6C792062652063616C6C6564206672 PUSH16 0x6D2074686520636F6E74726163742069 PUSH21 0x73656C66A2646970667358221220E7CE62DD68BC07 SWAP13 PUSH13 0x25C9E19CE1EB76908279A93743 ORIGIN PUSH20 0x5AB13F2F2D33101764736F6C634300060C003300 ",
              "sourceMap": "3610:9492:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11861:15;11919:1;11906:15;11894:27;;12007:15;11976:46;;;;;;;;:17;11994:8;;11976:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;11972:101;;;12036:21;12058:8;;12036:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12029:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11972:101;12111:17;12080:48;;;;;;;;:17;12098:8;;12080:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;;;;;;12076:75;;;12135:11;:9;:11::i;:::-;12076:75;12154:19;12176:20;12197:8;;12176:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12154:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12268:1;12251:6;:13;:18;12247:262;;;12311:15;12280:46;;;;;;;;:17;:27;12298:8;12280:27;;;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;12276:104;;;12341:22;:32;12364:8;12341:32;;;;;;;;;;;;;;;;;12334:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12276:104;12419:17;12388:48;;;;;;;;:17;:27;12406:8;12388:27;;;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;;;;;;12384:77;;;12444:11;:9;:11::i;:::-;12384:77;12474:20;:30;12495:8;12474:30;;;;;;;;;;;;;;;;;12465:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12247:262;12571:1;12554:6;:13;:18;12550:218;;;12603:15;12583:35;;;;;;;;:16;;;;;;;;;;;:35;;;;;;;;;12579:82;;;12633:21;12626:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12579:82;12689:17;12669:37;;;;;;;;:16;;;;;;;;;;;:37;;;;;;;;;12665:66;;;12714:11;:9;:11::i;:::-;12665:66;12744:19;12735:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12550:218;12874:14;12900:4;12892:18;;12916:6;12987:8;12997;;12924:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12892:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12871:136;;;13030:1;13018;:8;:13;13011:21;;;;13085:6;13079:13;13070:6;13064:4;13060:17;13053:40;9156:86;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3927:64;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8806:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3799:71;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5522:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6170:93;;;;;;;;;;;;;:::i;:::-;;9245:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9458:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11464:361;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6608:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6467:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3698:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5771:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8960:193;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7470:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3751:45;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6012:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8536:267;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8312:221;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8122:187;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5660:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6930:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7334:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7784:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5419:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6783:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9632:1320;;;;;;;;;;;;;:::i;:::-;;5893:116;;;;;;;;;;;;;:::i;:::-;;7939:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3873:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;7641:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10955:188;10988:152;10994:4;10988:152;;;11005:6;11126:4;11121:3;11115:4;11110:3;11107:1;11104;11097:4;11090:5;11086:16;11081:50;11076:55;;11025:111;;;;10955:188::o;9156:86::-;9210:4;9227:11;;9220:18;;9156:86;:::o;3927:64::-;3985:5;3974:17;;;;;;;;;;;;;;;;;;;;;;;;;;;3927:64;:::o;8806:151::-;8909:17;8883;8901:4;;8883:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;;;;;;;8930:23;8948:4;;8930:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;:23::i;:::-;8806:151;;:::o;3799:71::-;3855:14;;;;;;;;;;;;;;;;;3845:25;;;;;;3799:71;:::o;5522:135::-;5587:9;5599:8;:16;;5614:1;5599:16;;;5610:1;5599:16;5587:28;;;;5619:34;5635:17;5647:4;5635:11;:17::i;:::-;5619:15;:34::i;:::-;5522:135;;:::o;6170:93::-;6242:17;6223:16;;:36;;;;;;;;;;;;;;;;;;;;;;;;6170:93::o;9245:210::-;9327:4;9337:13;9353:19;9367:4;;9353:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:19::i;:::-;9337:35;;9383:19;:68;9430:10;;9442:6;9413:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9403:47;;;;;;9383:68;;;;;;;;;;;;9376:75;;;9245:210;;;;:::o;9458:171::-;9542:4;9559:19;:66;9606:10;;9618:4;;9589:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9579:45;;;;;;9559:66;;;;;;;;;;;;9552:73;;9458:171;;;;:::o;11464:361::-;11583:4;11561:27;;:10;:27;;;11553:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11655:1;11640:11;;:16;;;;;;;;;;;11734:1;11660:19;:70;11707:10;;11719:8;11690:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11680:49;;;;;;11660:70;;;;;;;;;;;;:75;;;;;;;;;;;11820:1;11739:19;:77;11786:10;;11798:15;11769:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11759:56;;;;;;11739:77;;;;;;;;;;;;:82;;;;;;;;;;;11464:361;;:::o;6608:172::-;6699:9;6711:8;:16;;6726:1;6711:16;;;6722:1;6711:16;6699:28;;;;6731:45;6752:4;;6731:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6758:17;6770:4;6758:11;:17::i;:::-;6731:20;:45::i;:::-;6608:172;;;;:::o;6467:138::-;6565:36;6586:4;;6565:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6592:8;;6565:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;:36::i;:::-;6467:138;;;;:::o;3698:50::-;;;:::o;5771:119::-;5842:44;5858:27;5875:8;5870:14;;5858:11;:27::i;:::-;5842:15;:44::i;:::-;5771:119;:::o;8960:193::-;9035:13;9051:19;9065:4;;9051:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:19::i;:::-;9035:35;;9102:17;9074;:25;9092:6;9074:25;;;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;;;;;;;9123:25;9141:6;9123:17;:25::i;:::-;8960:193;;;:::o;7470:168::-;7559:9;7571:8;:16;;7586:1;7571:16;;;7582:1;7571:16;7559:28;;;;7591:43;7610:4;;7591:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7616:17;7628:4;7616:11;:17::i;:::-;7591:18;:43::i;:::-;7470:168;;;;:::o;3751:45::-;;;;;;;;;;;;;;;;;;;:::o;6012:155::-;6113:15;6094:16;;:34;;;;;;;;;;;;;;;;;;;;;;;;6156:7;;6132:21;:31;;;;;;;:::i;:::-;;6012:155;;:::o;8536:267::-;8642:13;8658:19;8672:4;;8658:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:19::i;:::-;8642:35;;8709:15;8681:17;:25;8699:6;8681:25;;;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;;;;;;;8761:7;;8728:22;:30;8751:6;8728:30;;;;;;;;;;;;;;;;;:40;;;;;;;:::i;:::-;;8772:25;8790:6;8772:17;:25::i;:::-;8536:267;;;;;:::o;8312:221::-;8446:15;8420:17;8438:4;;8420:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;;;;;;;8495:7;;8465:21;8487:4;;8465:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;8506:23;8524:4;;8506:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;:23::i;:::-;8312:221;;;;:::o;8122:187::-;8192:13;8208:19;8222:4;;8208:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:19::i;:::-;8192:35;;8259:15;8231:17;:25;8249:6;8231:25;;;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;;;;;;;8278:25;8296:6;8278:17;:25::i;:::-;8122:187;;;:::o;5660:108::-;5725:38;5741:21;5753:8;5741:11;:21::i;:::-;5725:15;:38::i;:::-;5660:108;:::o;6930:156::-;7027:55;7048:4;;7027:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7054:27;7071:8;7066:14;;7054:11;:27::i;:::-;7027:20;:55::i;:::-;6930:156;;;:::o;7334:133::-;7429:34;7448:4;;7429:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7454:8;;7429:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:18;:34::i;:::-;7334:133;;;;:::o;7784:152::-;7879:53;7898:4;;7879:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7904:27;7921:8;7916:14;;7904:11;:27::i;:::-;7879:18;:53::i;:::-;7784:152;;;:::o;5419:100::-;5490:25;5506:8;;5490:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;:25::i;:::-;5419:100;;:::o;6783:144::-;6874:49;6895:4;;6874:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6901:21;6913:8;6901:11;:21::i;:::-;6874:20;:49::i;:::-;6783:144;;;:::o;9632:1320::-;9706:21;9730:13;:31;9744:16;9730:31;;;;;;;;;;;9706:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9765:16;9794:8;9784:19;;;;;;9765:38;;9836:394;3855:14;;;;;;;;;;;;;;;;;3845:25;;;;;;9842:8;:31;9836:394;;9936:15;9906:17;9924:8;9906:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;;;;;;;9956:38;;;;;;;;;;;;:20;9977:8;9956:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;:::i;:::-;;9999:36;;;;;;;;;;;;:21;10021:8;9999:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;:::i;:::-;;10081:13;:23;10095:8;10081:23;;;;;;;;;;;10070:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10139:28;;;;;;;;;;;;:13;:23;10153:8;10139:23;;;;;;;;;;;:28;;;;;;;;;;;;:::i;:::-;;10216:8;10206:19;;;;;;10195:30;;9836:394;;;10283:14;;;;;;;;;;;;;;;;;10249:13;:31;10263:16;10249:31;;;;;;;;;;;:48;;;;;;;;;;;;:::i;:::-;;10335:18;10356:13;:33;10370:18;10356:33;;;;;;;;;;;;;;;;;;;;;;;;;;;10335:54;;10393:357;10414:18;10399:33;;;:11;:33;;;;10393:357;;10439:21;10463:11;10439:35;;10515:15;10479:17;:33;10497:14;10479:33;;;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;;;;;;;10535:44;;;;;;;;;;;;:20;:36;10556:14;10535:36;;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;:::i;:::-;;10584:43;;;;;;;;;;;;:22;:38;10607:14;10584:38;;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;:::i;:::-;;10646:13;:29;10660:14;10646:29;;;;;;;;;;;;;;;;;;;;;;;;;;;10632:43;;10742:3;10710:35;;:13;:29;10724:14;10710:29;;;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;10393:357;;;;10805:18;10769:13;:33;10783:18;10769:33;;;;;;;;;;;;;;;;;;:54;;;;;;;;;;;;;;;;;;3985:5;3974:17;;;;;;;;;;;;;;;;;;;;;;;;;;;10828:19;:44;;;;;;;;;;;;:::i;:::-;;10895:15;10876:16;;:34;;;;;;;;;;;;;;;;;;;;;;;;10928:1;10914:11;:15;;;;10947:1;10933:10;;:15;;;;;;;;;;;9632:1320;;;:::o;5893:116::-;5960:15;5941:16;;:34;;;;;;;;;;;;;;;;;;;;;;;;5979:26;;;;;;;;;;;;:21;:26;;;;;;;;;;;;:::i;:::-;;5893:116::o;7939:180::-;8037:15;8011:17;8029:4;;8011:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;;;;;;;8056:32;;;;;;;;;;;;:21;8078:4;;8056:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;:::i;:::-;;8092:23;8110:4;;8092:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;:23::i;:::-;7939:180;;:::o;3873:51::-;;;:::o;7641:140::-;7730:47;7749:4;;7730:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7755:21;7767:8;7755:11;:21::i;:::-;7730:18;:47::i;:::-;7641:140;;;:::o;4814:250::-;4872:16;4901:4;4891:15;;;;;;4872:34;;4948:1;4914:13;:23;4928:8;4914:23;;;;;;;;;;;:30;;;;;;;;;;;;;;;;:35;4910:151;;;4982:13;:31;4996:16;4982:31;;;;;;;;;;;4956:13;:23;4970:8;4956:23;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5052:4;5018:13;:31;5032:16;5018:31;;;;;;;;;;;:38;;;;;;;;;;;;:::i;:::-;;4910:151;4814:250;;:::o;11329:132::-;11383:14;11417:2;11407:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11403:17;;11454:1;11449:2;11446:1;11442:10;11435:21;11433:25;;;:::o;5283:133::-;5363:15;5344:16;;:34;;;;;;;;;;;;;;;;;;;;;;;;5404:8;5382:19;:30;;;;;;;;;;;;:::i;:::-;;5283:133;:::o;11146:180::-;11207:6;11219:10;11238:6;11233:76;11254:1;11250;:5;11233:76;;;11302:1;11298;:5;11288:4;11281:11;;:1;11283;11281:4;;;;;;;;;;;;;;;;:11;11274:19;;;:30;;;;;11267:37;;;;11257:3;;;;;;;11233:76;;;;11319:3;11312:10;;;11146:180;;;:::o;6266:198::-;6377:15;6351:17;6369:4;6351:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;;;;;;;6425:8;6396:20;6417:4;6396:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;:::i;:::-;;6437:23;6455:4;6437:17;:23::i;:::-;6266:198;;:::o;5067:213::-;5154:3;5127:30;;:13;:23;5141:8;5127:23;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;;5123:154;;;5190:13;:33;5204:18;5190:33;;;;;;;;;;;;;;;;;;;;;;;;;;;5164:13;:23;5178:8;5164:23;;;;;;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;5264:8;5228:13;:33;5242:18;5228:33;;;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;5123:154;5067:213;:::o;7089:242::-;7171:13;7187:19;7201:4;7187:13;:19::i;:::-;7171:35;;7238:15;7210:17;:25;7228:6;7210:25;;;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;;;;;;;7288:8;7257:20;:28;7278:6;7257:28;;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;:::i;:::-;;7300:25;7318:6;7300:17;:25::i;:::-;7089:242;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "2953800",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "": "infinite",
                "DEFAULT_FALLBACK_VALUE()": "infinite",
                "MOCKS_LIST_END()": "infinite",
                "MOCKS_LIST_END_HASH()": "355",
                "MOCKS_LIST_START()": "250",
                "SENTINEL_ANY_MOCKS()": "302",
                "givenAnyReturn(bytes)": "infinite",
                "givenAnyReturnAddress(address)": "infinite",
                "givenAnyReturnBool(bool)": "infinite",
                "givenAnyReturnUint(uint256)": "infinite",
                "givenAnyRevert()": "infinite",
                "givenAnyRevertWithMessage(string)": "infinite",
                "givenAnyRunOutOfGas()": "21121",
                "givenCalldataReturn(bytes,bytes)": "infinite",
                "givenCalldataReturnAddress(bytes,address)": "infinite",
                "givenCalldataReturnBool(bytes,bool)": "infinite",
                "givenCalldataReturnUint(bytes,uint256)": "infinite",
                "givenCalldataRevert(bytes)": "infinite",
                "givenCalldataRevertWithMessage(bytes,string)": "infinite",
                "givenCalldataRunOutOfGas(bytes)": "infinite",
                "givenMethodReturn(bytes,bytes)": "infinite",
                "givenMethodReturnAddress(bytes,address)": "infinite",
                "givenMethodReturnBool(bytes,bool)": "infinite",
                "givenMethodReturnUint(bytes,uint256)": "infinite",
                "givenMethodRevert(bytes)": "infinite",
                "givenMethodRevertWithMessage(bytes,string)": "infinite",
                "givenMethodRunOutOfGas(bytes)": "infinite",
                "invocationCount()": "1060",
                "invocationCountForCalldata(bytes)": "infinite",
                "invocationCountForMethod(bytes)": "infinite",
                "reset()": "infinite",
                "updateInvocationCount(bytes4,bytes)": "infinite"
              },
              "internal": {
                "_givenAnyReturn(bytes memory)": "infinite",
                "_givenCalldataReturn(bytes memory,bytes memory)": "infinite",
                "_givenMethodReturn(bytes memory,bytes memory)": "infinite",
                "bytesToBytes4(bytes memory)": "infinite",
                "trackCalldataMock(bytes memory)": "infinite",
                "trackMethodIdMock(bytes4)": "43848",
                "uintToBytes(uint256)": "infinite",
                "useAllGas()": "infinite"
              }
            },
            "methodIdentifiers": {
              "DEFAULT_FALLBACK_VALUE()": "122aea81",
              "MOCKS_LIST_END()": "7cd96ee4",
              "MOCKS_LIST_END_HASH()": "2ed238dc",
              "MOCKS_LIST_START()": "67aad04a",
              "SENTINEL_ANY_MOCKS()": "f07da229",
              "givenAnyReturn(bytes)": "d6fe9778",
              "givenAnyReturnAddress(address)": "682b4797",
              "givenAnyReturnBool(bool)": "36ff0ee5",
              "givenAnyReturnUint(uint256)": "af21ac78",
              "givenAnyRevert()": "e211b8a5",
              "givenAnyRevertWithMessage(string)": "87abab65",
              "givenAnyRunOutOfGas()": "3956dc6b",
              "givenCalldataReturn(bytes,bytes)": "61936594",
              "givenCalldataReturnAddress(bytes,address)": "b3901f29",
              "givenCalldataReturnBool(bytes,bool)": "5a3855ab",
              "givenCalldataReturnUint(bytes,uint256)": "d73ca0ac",
              "givenCalldataRevert(bytes)": "eb861f69",
              "givenCalldataRevertWithMessage(bytes,string)": "9eaeed75",
              "givenCalldataRunOutOfGas(bytes)": "21fed4d6",
              "givenMethodReturn(bytes,bytes)": "c6ee167f",
              "givenMethodReturnAddress(bytes,address)": "cf11ff5d",
              "givenMethodReturnBool(bytes,bool)": "6f400756",
              "givenMethodReturnUint(bytes,uint256)": "f5afa9c1",
              "givenMethodRevert(bytes)": "aa788c55",
              "givenMethodRevertWithMessage(bytes,string)": "9a1dc86b",
              "givenMethodRunOutOfGas(bytes)": "68ab6f2f",
              "invocationCount()": "0a20119f",
              "invocationCountForCalldata(bytes)": "586984a4",
              "invocationCountForMethod(bytes)": "4937c4f6",
              "reset()": "d826f88f",
              "updateInvocationCount(bytes4,bytes)": "58cbc025"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"DEFAULT_FALLBACK_VALUE\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MOCKS_LIST_END\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MOCKS_LIST_END_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MOCKS_LIST_START\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SENTINEL_ANY_MOCKS\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"name\":\"givenAnyReturn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"response\",\"type\":\"address\"}],\"name\":\"givenAnyReturnAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"response\",\"type\":\"bool\"}],\"name\":\"givenAnyReturnBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"response\",\"type\":\"uint256\"}],\"name\":\"givenAnyReturnUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"givenAnyRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"givenAnyRevertWithMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"givenAnyRunOutOfGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"name\":\"givenCalldataReturn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"response\",\"type\":\"address\"}],\"name\":\"givenCalldataReturnAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"response\",\"type\":\"bool\"}],\"name\":\"givenCalldataReturnBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"response\",\"type\":\"uint256\"}],\"name\":\"givenCalldataReturnUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"}],\"name\":\"givenCalldataRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"givenCalldataRevertWithMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"}],\"name\":\"givenCalldataRunOutOfGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"name\":\"givenMethodReturn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"response\",\"type\":\"address\"}],\"name\":\"givenMethodReturnAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"response\",\"type\":\"bool\"}],\"name\":\"givenMethodReturnBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"response\",\"type\":\"uint256\"}],\"name\":\"givenMethodReturnUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"}],\"name\":\"givenMethodRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"givenMethodRevertWithMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"}],\"name\":\"givenMethodRunOutOfGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"invocationCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"}],\"name\":\"invocationCountForCalldata\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"}],\"name\":\"invocationCountForMethod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"methodId\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"originalMsgData\",\"type\":\"bytes\"}],\"name\":\"updateInvocationCount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"givenAnyReturn(bytes)\":{\"details\":\"After calling this method, the mock will return `response` when it is called with any calldata that is not mocked more specifically below (e.g. using givenMethodReturn).\",\"params\":{\"response\":\"ABI encoded response that will be returned if method is invoked\"}},\"givenCalldataReturn(bytes,bytes)\":{\"details\":\"After calling this method, the mock will return `response` when the given methodId is called with matching arguments. These exact calldataMocks will take precedence over all other calldataMocks.\",\"params\":{\"call\":\"ABI encoded calldata (methodId and arguments)\",\"response\":\"ABI encoded response that will be returned if contract is invoked with calldata\"}},\"invocationCount()\":{\"details\":\"Returns the number of times anything has been called on this mock since last reset\"},\"invocationCountForCalldata(bytes)\":{\"details\":\"Returns the number of times this mock has been called with the exact calldata since last reset.\",\"params\":{\"call\":\"ABI encoded calldata (methodId and arguments)\"}},\"reset()\":{\"details\":\"Resets all mocked methods and invocation counts.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Implementation of the MockInterface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@gnosis.pm/mock-contract/contracts/MockContract.sol\":\"MockContract\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@gnosis.pm/mock-contract/contracts/MockContract.sol\":{\"content\":\"pragma solidity ^0.6.0;\\n\\ninterface MockInterface {\\n\\t/**\\n\\t * @dev After calling this method, the mock will return `response` when it is called\\n\\t * with any calldata that is not mocked more specifically below\\n\\t * (e.g. using givenMethodReturn).\\n\\t * @param response ABI encoded response that will be returned if method is invoked\\n\\t */\\n\\tfunction givenAnyReturn(bytes calldata response) external;\\n\\tfunction givenAnyReturnBool(bool response) external;\\n\\tfunction givenAnyReturnUint(uint response) external;\\n\\tfunction givenAnyReturnAddress(address response) external;\\n\\n\\tfunction givenAnyRevert() external;\\n\\tfunction givenAnyRevertWithMessage(string calldata message) external;\\n\\tfunction givenAnyRunOutOfGas() external;\\n\\n\\t/**\\n\\t * @dev After calling this method, the mock will return `response` when the given\\n\\t * methodId is called regardless of arguments. If the methodId and arguments\\n\\t * are mocked more specifically (using `givenMethodAndArguments`) the latter\\n\\t * will take precedence.\\n\\t * @param method ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it\\n\\t * @param response ABI encoded response that will be returned if method is invoked\\n\\t */\\n\\tfunction givenMethodReturn(bytes calldata method, bytes calldata response) external;\\n\\tfunction givenMethodReturnBool(bytes calldata method, bool response) external;\\n\\tfunction givenMethodReturnUint(bytes calldata method, uint response) external;\\n\\tfunction givenMethodReturnAddress(bytes calldata method, address response) external;\\n\\n\\tfunction givenMethodRevert(bytes calldata method) external;\\n\\tfunction givenMethodRevertWithMessage(bytes calldata method, string calldata message) external;\\n\\tfunction givenMethodRunOutOfGas(bytes calldata method) external;\\n\\n\\t/**\\n\\t * @dev After calling this method, the mock will return `response` when the given\\n\\t * methodId is called with matching arguments. These exact calldataMocks will take\\n\\t * precedence over all other calldataMocks.\\n\\t * @param call ABI encoded calldata (methodId and arguments)\\n\\t * @param response ABI encoded response that will be returned if contract is invoked with calldata\\n\\t */\\n\\tfunction givenCalldataReturn(bytes calldata call, bytes calldata response) external;\\n\\tfunction givenCalldataReturnBool(bytes calldata call, bool response) external;\\n\\tfunction givenCalldataReturnUint(bytes calldata call, uint response) external;\\n\\tfunction givenCalldataReturnAddress(bytes calldata call, address response) external;\\n\\n\\tfunction givenCalldataRevert(bytes calldata call) external;\\n\\tfunction givenCalldataRevertWithMessage(bytes calldata call, string calldata message) external;\\n\\tfunction givenCalldataRunOutOfGas(bytes calldata call) external;\\n\\n\\t/**\\n\\t * @dev Returns the number of times anything has been called on this mock since last reset\\n\\t */\\n\\tfunction invocationCount() external returns (uint);\\n\\n\\t/**\\n\\t * @dev Returns the number of times the given method has been called on this mock since last reset\\n\\t * @param method ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it\\n\\t */\\n\\tfunction invocationCountForMethod(bytes calldata method) external returns (uint);\\n\\n\\t/**\\n\\t * @dev Returns the number of times this mock has been called with the exact calldata since last reset.\\n\\t * @param call ABI encoded calldata (methodId and arguments)\\n\\t */\\n\\tfunction invocationCountForCalldata(bytes calldata call) external returns (uint);\\n\\n\\t/**\\n\\t * @dev Resets all mocked methods and invocation counts.\\n\\t */\\n\\t function reset() external;\\n}\\n\\n/**\\n * Implementation of the MockInterface.\\n */\\ncontract MockContract is MockInterface {\\n\\tenum MockType { Return, Revert, OutOfGas }\\n\\t\\n\\tbytes32 public constant MOCKS_LIST_START = hex\\\"01\\\";\\n\\tbytes public constant MOCKS_LIST_END = \\\"0xff\\\";\\n\\tbytes32 public constant MOCKS_LIST_END_HASH = keccak256(MOCKS_LIST_END);\\n\\tbytes4 public constant SENTINEL_ANY_MOCKS = hex\\\"01\\\";\\n\\tbytes public constant DEFAULT_FALLBACK_VALUE = abi.encode(false);\\n\\n\\t// A linked list allows easy iteration and inclusion checks\\n\\tmapping(bytes32 => bytes) calldataMocks;\\n\\tmapping(bytes => MockType) calldataMockTypes;\\n\\tmapping(bytes => bytes) calldataExpectations;\\n\\tmapping(bytes => string) calldataRevertMessage;\\n\\tmapping(bytes32 => uint) calldataInvocations;\\n\\n\\tmapping(bytes4 => bytes4) methodIdMocks;\\n\\tmapping(bytes4 => MockType) methodIdMockTypes;\\n\\tmapping(bytes4 => bytes) methodIdExpectations;\\n\\tmapping(bytes4 => string) methodIdRevertMessages;\\n\\tmapping(bytes32 => uint) methodIdInvocations;\\n\\n\\tMockType fallbackMockType;\\n\\tbytes fallbackExpectation = DEFAULT_FALLBACK_VALUE;\\n\\tstring fallbackRevertMessage;\\n\\tuint invocations;\\n\\tuint resetCount;\\n\\n\\tconstructor() public {\\n\\t\\tcalldataMocks[MOCKS_LIST_START] = MOCKS_LIST_END;\\n\\t\\tmethodIdMocks[SENTINEL_ANY_MOCKS] = SENTINEL_ANY_MOCKS;\\n\\t}\\n\\n\\tfunction trackCalldataMock(bytes memory call) private {\\n\\t\\tbytes32 callHash = keccak256(call);\\n\\t\\tif (calldataMocks[callHash].length == 0) {\\n\\t\\t\\tcalldataMocks[callHash] = calldataMocks[MOCKS_LIST_START];\\n\\t\\t\\tcalldataMocks[MOCKS_LIST_START] = call;\\n\\t\\t}\\n\\t}\\n\\n\\tfunction trackMethodIdMock(bytes4 methodId) private {\\n\\t\\tif (methodIdMocks[methodId] == 0x0) {\\n\\t\\t\\tmethodIdMocks[methodId] = methodIdMocks[SENTINEL_ANY_MOCKS];\\n\\t\\t\\tmethodIdMocks[SENTINEL_ANY_MOCKS] = methodId;\\n\\t\\t}\\n\\t}\\n\\n\\tfunction _givenAnyReturn(bytes memory response) internal {\\n\\t\\tfallbackMockType = MockType.Return;\\n\\t\\tfallbackExpectation = response;\\n\\t}\\n\\n\\tfunction givenAnyReturn(bytes calldata response) override external {\\n\\t\\t_givenAnyReturn(response);\\n\\t}\\n\\n\\tfunction givenAnyReturnBool(bool response) override external {\\n\\t\\tuint flag = response ? 1 : 0;\\n\\t\\t_givenAnyReturn(uintToBytes(flag));\\n\\t}\\n\\n\\tfunction givenAnyReturnUint(uint response) override external {\\n\\t\\t_givenAnyReturn(uintToBytes(response));\\t\\n\\t}\\n\\n\\tfunction givenAnyReturnAddress(address response) override external {\\n\\t\\t_givenAnyReturn(uintToBytes(uint(response)));\\n\\t}\\n\\n\\tfunction givenAnyRevert() override external {\\n\\t\\tfallbackMockType = MockType.Revert;\\n\\t\\tfallbackRevertMessage = \\\"\\\";\\n\\t}\\n\\n\\tfunction givenAnyRevertWithMessage(string calldata message) override external {\\n\\t\\tfallbackMockType = MockType.Revert;\\n\\t\\tfallbackRevertMessage = message;\\n\\t}\\n\\n\\tfunction givenAnyRunOutOfGas() override external {\\n\\t\\tfallbackMockType = MockType.OutOfGas;\\n\\t}\\n\\n\\tfunction _givenCalldataReturn(bytes memory call, bytes memory response) private  {\\n\\t\\tcalldataMockTypes[call] = MockType.Return;\\n\\t\\tcalldataExpectations[call] = response;\\n\\t\\ttrackCalldataMock(call);\\n\\t}\\n\\n\\tfunction givenCalldataReturn(bytes calldata call, bytes calldata response) override external  {\\n\\t\\t_givenCalldataReturn(call, response);\\n\\t}\\n\\n\\tfunction givenCalldataReturnBool(bytes calldata call, bool response) override external {\\n\\t\\tuint flag = response ? 1 : 0;\\n\\t\\t_givenCalldataReturn(call, uintToBytes(flag));\\n\\t}\\n\\n\\tfunction givenCalldataReturnUint(bytes calldata call, uint response) override external {\\n\\t\\t_givenCalldataReturn(call, uintToBytes(response));\\n\\t}\\n\\n\\tfunction givenCalldataReturnAddress(bytes calldata call, address response) override external {\\n\\t\\t_givenCalldataReturn(call, uintToBytes(uint(response)));\\n\\t}\\n\\n\\tfunction _givenMethodReturn(bytes memory call, bytes memory response) private {\\n\\t\\tbytes4 method = bytesToBytes4(call);\\n\\t\\tmethodIdMockTypes[method] = MockType.Return;\\n\\t\\tmethodIdExpectations[method] = response;\\n\\t\\ttrackMethodIdMock(method);\\t\\t\\n\\t}\\n\\n\\tfunction givenMethodReturn(bytes calldata call, bytes calldata response) override external {\\n\\t\\t_givenMethodReturn(call, response);\\n\\t}\\n\\n\\tfunction givenMethodReturnBool(bytes calldata call, bool response) override external {\\n\\t\\tuint flag = response ? 1 : 0;\\n\\t\\t_givenMethodReturn(call, uintToBytes(flag));\\n\\t}\\n\\n\\tfunction givenMethodReturnUint(bytes calldata call, uint response) override external {\\n\\t\\t_givenMethodReturn(call, uintToBytes(response));\\n\\t}\\n\\n\\tfunction givenMethodReturnAddress(bytes calldata call, address response) override external {\\n\\t\\t_givenMethodReturn(call, uintToBytes(uint(response)));\\n\\t}\\n\\n\\tfunction givenCalldataRevert(bytes calldata call) override external {\\n\\t\\tcalldataMockTypes[call] = MockType.Revert;\\n\\t\\tcalldataRevertMessage[call] = \\\"\\\";\\n\\t\\ttrackCalldataMock(call);\\n\\t}\\n\\n\\tfunction givenMethodRevert(bytes calldata call) override external {\\n\\t\\tbytes4 method = bytesToBytes4(call);\\n\\t\\tmethodIdMockTypes[method] = MockType.Revert;\\n\\t\\ttrackMethodIdMock(method);\\t\\t\\n\\t}\\n\\n\\tfunction givenCalldataRevertWithMessage(bytes calldata call, string calldata message) override external {\\n\\t\\tcalldataMockTypes[call] = MockType.Revert;\\n\\t\\tcalldataRevertMessage[call] = message;\\n\\t\\ttrackCalldataMock(call);\\n\\t}\\n\\n\\tfunction givenMethodRevertWithMessage(bytes calldata call, string calldata message) override external {\\n\\t\\tbytes4 method = bytesToBytes4(call);\\n\\t\\tmethodIdMockTypes[method] = MockType.Revert;\\n\\t\\tmethodIdRevertMessages[method] = message;\\n\\t\\ttrackMethodIdMock(method);\\t\\t\\n\\t}\\n\\n\\tfunction givenCalldataRunOutOfGas(bytes calldata call) override external {\\n\\t\\tcalldataMockTypes[call] = MockType.OutOfGas;\\n\\t\\ttrackCalldataMock(call);\\n\\t}\\n\\n\\tfunction givenMethodRunOutOfGas(bytes calldata call) override external {\\n\\t\\tbytes4 method = bytesToBytes4(call);\\n\\t\\tmethodIdMockTypes[method] = MockType.OutOfGas;\\n\\t\\ttrackMethodIdMock(method);\\t\\n\\t}\\n\\n\\tfunction invocationCount() override external returns (uint) {\\n\\t\\treturn invocations;\\n\\t}\\n\\n\\tfunction invocationCountForMethod(bytes calldata call) override external returns (uint) {\\n\\t\\tbytes4 method = bytesToBytes4(call);\\n\\t\\treturn methodIdInvocations[keccak256(abi.encodePacked(resetCount, method))];\\n\\t}\\n\\n\\tfunction invocationCountForCalldata(bytes calldata call) override external returns (uint) {\\n\\t\\treturn calldataInvocations[keccak256(abi.encodePacked(resetCount, call))];\\n\\t}\\n\\n\\tfunction reset() override external {\\n\\t\\t// Reset all exact calldataMocks\\n\\t\\tbytes memory nextMock = calldataMocks[MOCKS_LIST_START];\\n\\t\\tbytes32 mockHash = keccak256(nextMock);\\n\\t\\t// We cannot compary bytes\\n\\t\\twhile(mockHash != MOCKS_LIST_END_HASH) {\\n\\t\\t\\t// Reset all mock maps\\n\\t\\t\\tcalldataMockTypes[nextMock] = MockType.Return;\\n\\t\\t\\tcalldataExpectations[nextMock] = hex\\\"\\\";\\n\\t\\t\\tcalldataRevertMessage[nextMock] = \\\"\\\";\\n\\t\\t\\t// Set next mock to remove\\n\\t\\t\\tnextMock = calldataMocks[mockHash];\\n\\t\\t\\t// Remove from linked list\\n\\t\\t\\tcalldataMocks[mockHash] = \\\"\\\";\\n\\t\\t\\t// Update mock hash\\n\\t\\t\\tmockHash = keccak256(nextMock);\\n\\t\\t}\\n\\t\\t// Clear list\\n\\t\\tcalldataMocks[MOCKS_LIST_START] = MOCKS_LIST_END;\\n\\n\\t\\t// Reset all any calldataMocks\\n\\t\\tbytes4 nextAnyMock = methodIdMocks[SENTINEL_ANY_MOCKS];\\n\\t\\twhile(nextAnyMock != SENTINEL_ANY_MOCKS) {\\n\\t\\t\\tbytes4 currentAnyMock = nextAnyMock;\\n\\t\\t\\tmethodIdMockTypes[currentAnyMock] = MockType.Return;\\n\\t\\t\\tmethodIdExpectations[currentAnyMock] = hex\\\"\\\";\\n\\t\\t\\tmethodIdRevertMessages[currentAnyMock] = \\\"\\\";\\n\\t\\t\\tnextAnyMock = methodIdMocks[currentAnyMock];\\n\\t\\t\\t// Remove from linked list\\n\\t\\t\\tmethodIdMocks[currentAnyMock] = 0x0;\\n\\t\\t}\\n\\t\\t// Clear list\\n\\t\\tmethodIdMocks[SENTINEL_ANY_MOCKS] = SENTINEL_ANY_MOCKS;\\n\\n\\t\\tfallbackExpectation = DEFAULT_FALLBACK_VALUE;\\n\\t\\tfallbackMockType = MockType.Return;\\n\\t\\tinvocations = 0;\\n\\t\\tresetCount += 1;\\n\\t}\\n\\n\\tfunction useAllGas() private {\\n\\t\\twhile(true) {\\n\\t\\t\\tbool s;\\n\\t\\t\\tassembly {\\n\\t\\t\\t\\t//expensive call to EC multiply contract\\n\\t\\t\\t\\ts := call(sub(gas(), 2000), 6, 0, 0x0, 0xc0, 0x0, 0x60)\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tfunction bytesToBytes4(bytes memory b) private pure returns (bytes4) {\\n\\t\\tbytes4 out;\\n\\t\\tfor (uint i = 0; i < 4; i++) {\\n\\t\\t\\tout |= bytes4(b[i] & 0xFF) >> (i * 8);\\n\\t\\t}\\n\\t\\treturn out;\\n\\t}\\n\\n\\tfunction uintToBytes(uint256 x) private pure returns (bytes memory b) {\\n\\t\\tb = new bytes(32);\\n\\t\\tassembly { mstore(add(b, 32), x) }\\n\\t}\\n\\n\\tfunction updateInvocationCount(bytes4 methodId, bytes memory originalMsgData) public {\\n\\t\\trequire(msg.sender == address(this), \\\"Can only be called from the contract itself\\\");\\n\\t\\tinvocations += 1;\\n\\t\\tmethodIdInvocations[keccak256(abi.encodePacked(resetCount, methodId))] += 1;\\n\\t\\tcalldataInvocations[keccak256(abi.encodePacked(resetCount, originalMsgData))] += 1;\\n\\t}\\n\\n\\tfallback () payable external {\\n\\t\\tbytes4 methodId;\\n\\t\\tassembly {\\n\\t\\t\\tmethodId := calldataload(0)\\n\\t\\t}\\n\\n\\t\\t// First, check exact matching overrides\\n\\t\\tif (calldataMockTypes[msg.data] == MockType.Revert) {\\n\\t\\t\\trevert(calldataRevertMessage[msg.data]);\\n\\t\\t}\\n\\t\\tif (calldataMockTypes[msg.data] == MockType.OutOfGas) {\\n\\t\\t\\tuseAllGas();\\n\\t\\t}\\n\\t\\tbytes memory result = calldataExpectations[msg.data];\\n\\n\\t\\t// Then check method Id overrides\\n\\t\\tif (result.length == 0) {\\n\\t\\t\\tif (methodIdMockTypes[methodId] == MockType.Revert) {\\n\\t\\t\\t\\trevert(methodIdRevertMessages[methodId]);\\n\\t\\t\\t}\\n\\t\\t\\tif (methodIdMockTypes[methodId] == MockType.OutOfGas) {\\n\\t\\t\\t\\tuseAllGas();\\n\\t\\t\\t}\\n\\t\\t\\tresult = methodIdExpectations[methodId];\\n\\t\\t}\\n\\n\\t\\t// Last, use the fallback override\\n\\t\\tif (result.length == 0) {\\n\\t\\t\\tif (fallbackMockType == MockType.Revert) {\\n\\t\\t\\t\\trevert(fallbackRevertMessage);\\n\\t\\t\\t}\\n\\t\\t\\tif (fallbackMockType == MockType.OutOfGas) {\\n\\t\\t\\t\\tuseAllGas();\\n\\t\\t\\t}\\n\\t\\t\\tresult = fallbackExpectation;\\n\\t\\t}\\n\\n\\t\\t// Record invocation as separate call so we don't rollback in case we are called with STATICCALL\\n\\t\\t(, bytes memory r) = address(this).call{gas: 100000}(abi.encodeWithSignature(\\\"updateInvocationCount(bytes4,bytes)\\\", methodId, msg.data));\\n\\t\\tassert(r.length == 0);\\n\\t\\t\\n\\t\\tassembly {\\n\\t\\t\\treturn(add(0x20, result), mload(result))\\n\\t\\t}\\n\\t}\\n}\\n\",\"keccak256\":\"0x7dfa539d7cb818132cafb963b407232c26d409ca912680691c59879e07014aa9\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 183,
                "contract": "@gnosis.pm/mock-contract/contracts/MockContract.sol:MockContract",
                "label": "calldataMocks",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_bytes32,t_bytes_storage)"
              },
              {
                "astId": 187,
                "contract": "@gnosis.pm/mock-contract/contracts/MockContract.sol:MockContract",
                "label": "calldataMockTypes",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_bytes_memory_ptr,t_enum(MockType)159)"
              },
              {
                "astId": 191,
                "contract": "@gnosis.pm/mock-contract/contracts/MockContract.sol:MockContract",
                "label": "calldataExpectations",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_bytes_memory_ptr,t_bytes_storage)"
              },
              {
                "astId": 195,
                "contract": "@gnosis.pm/mock-contract/contracts/MockContract.sol:MockContract",
                "label": "calldataRevertMessage",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_bytes_memory_ptr,t_string_storage)"
              },
              {
                "astId": 199,
                "contract": "@gnosis.pm/mock-contract/contracts/MockContract.sol:MockContract",
                "label": "calldataInvocations",
                "offset": 0,
                "slot": "4",
                "type": "t_mapping(t_bytes32,t_uint256)"
              },
              {
                "astId": 203,
                "contract": "@gnosis.pm/mock-contract/contracts/MockContract.sol:MockContract",
                "label": "methodIdMocks",
                "offset": 0,
                "slot": "5",
                "type": "t_mapping(t_bytes4,t_bytes4)"
              },
              {
                "astId": 207,
                "contract": "@gnosis.pm/mock-contract/contracts/MockContract.sol:MockContract",
                "label": "methodIdMockTypes",
                "offset": 0,
                "slot": "6",
                "type": "t_mapping(t_bytes4,t_enum(MockType)159)"
              },
              {
                "astId": 211,
                "contract": "@gnosis.pm/mock-contract/contracts/MockContract.sol:MockContract",
                "label": "methodIdExpectations",
                "offset": 0,
                "slot": "7",
                "type": "t_mapping(t_bytes4,t_bytes_storage)"
              },
              {
                "astId": 215,
                "contract": "@gnosis.pm/mock-contract/contracts/MockContract.sol:MockContract",
                "label": "methodIdRevertMessages",
                "offset": 0,
                "slot": "8",
                "type": "t_mapping(t_bytes4,t_string_storage)"
              },
              {
                "astId": 219,
                "contract": "@gnosis.pm/mock-contract/contracts/MockContract.sol:MockContract",
                "label": "methodIdInvocations",
                "offset": 0,
                "slot": "9",
                "type": "t_mapping(t_bytes32,t_uint256)"
              },
              {
                "astId": 221,
                "contract": "@gnosis.pm/mock-contract/contracts/MockContract.sol:MockContract",
                "label": "fallbackMockType",
                "offset": 0,
                "slot": "10",
                "type": "t_enum(MockType)159"
              },
              {
                "astId": 224,
                "contract": "@gnosis.pm/mock-contract/contracts/MockContract.sol:MockContract",
                "label": "fallbackExpectation",
                "offset": 0,
                "slot": "11",
                "type": "t_bytes_storage"
              },
              {
                "astId": 226,
                "contract": "@gnosis.pm/mock-contract/contracts/MockContract.sol:MockContract",
                "label": "fallbackRevertMessage",
                "offset": 0,
                "slot": "12",
                "type": "t_string_storage"
              },
              {
                "astId": 228,
                "contract": "@gnosis.pm/mock-contract/contracts/MockContract.sol:MockContract",
                "label": "invocations",
                "offset": 0,
                "slot": "13",
                "type": "t_uint256"
              },
              {
                "astId": 230,
                "contract": "@gnosis.pm/mock-contract/contracts/MockContract.sol:MockContract",
                "label": "resetCount",
                "offset": 0,
                "slot": "14",
                "type": "t_uint256"
              }
            ],
            "types": {
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_bytes4": {
                "encoding": "inplace",
                "label": "bytes4",
                "numberOfBytes": "4"
              },
              "t_bytes_memory_ptr": {
                "encoding": "bytes",
                "label": "bytes",
                "numberOfBytes": "32"
              },
              "t_bytes_storage": {
                "encoding": "bytes",
                "label": "bytes",
                "numberOfBytes": "32"
              },
              "t_enum(MockType)159": {
                "encoding": "inplace",
                "label": "enum MockContract.MockType",
                "numberOfBytes": "1"
              },
              "t_mapping(t_bytes32,t_bytes_storage)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => bytes)",
                "numberOfBytes": "32",
                "value": "t_bytes_storage"
              },
              "t_mapping(t_bytes32,t_uint256)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_mapping(t_bytes4,t_bytes4)": {
                "encoding": "mapping",
                "key": "t_bytes4",
                "label": "mapping(bytes4 => bytes4)",
                "numberOfBytes": "32",
                "value": "t_bytes4"
              },
              "t_mapping(t_bytes4,t_bytes_storage)": {
                "encoding": "mapping",
                "key": "t_bytes4",
                "label": "mapping(bytes4 => bytes)",
                "numberOfBytes": "32",
                "value": "t_bytes_storage"
              },
              "t_mapping(t_bytes4,t_enum(MockType)159)": {
                "encoding": "mapping",
                "key": "t_bytes4",
                "label": "mapping(bytes4 => enum MockContract.MockType)",
                "numberOfBytes": "32",
                "value": "t_enum(MockType)159"
              },
              "t_mapping(t_bytes4,t_string_storage)": {
                "encoding": "mapping",
                "key": "t_bytes4",
                "label": "mapping(bytes4 => string)",
                "numberOfBytes": "32",
                "value": "t_string_storage"
              },
              "t_mapping(t_bytes_memory_ptr,t_bytes_storage)": {
                "encoding": "mapping",
                "key": "t_bytes_memory_ptr",
                "label": "mapping(bytes => bytes)",
                "numberOfBytes": "32",
                "value": "t_bytes_storage"
              },
              "t_mapping(t_bytes_memory_ptr,t_enum(MockType)159)": {
                "encoding": "mapping",
                "key": "t_bytes_memory_ptr",
                "label": "mapping(bytes => enum MockContract.MockType)",
                "numberOfBytes": "32",
                "value": "t_enum(MockType)159"
              },
              "t_mapping(t_bytes_memory_ptr,t_string_storage)": {
                "encoding": "mapping",
                "key": "t_bytes_memory_ptr",
                "label": "mapping(bytes => string)",
                "numberOfBytes": "32",
                "value": "t_string_storage"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Implementation of the MockInterface.",
            "version": 1
          }
        },
        "MockInterface": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "response",
                  "type": "bytes"
                }
              ],
              "name": "givenAnyReturn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "response",
                  "type": "address"
                }
              ],
              "name": "givenAnyReturnAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bool",
                  "name": "response",
                  "type": "bool"
                }
              ],
              "name": "givenAnyReturnBool",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "response",
                  "type": "uint256"
                }
              ],
              "name": "givenAnyReturnUint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "givenAnyRevert",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "message",
                  "type": "string"
                }
              ],
              "name": "givenAnyRevertWithMessage",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "givenAnyRunOutOfGas",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "response",
                  "type": "bytes"
                }
              ],
              "name": "givenCalldataReturn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "response",
                  "type": "address"
                }
              ],
              "name": "givenCalldataReturnAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "bool",
                  "name": "response",
                  "type": "bool"
                }
              ],
              "name": "givenCalldataReturnBool",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "response",
                  "type": "uint256"
                }
              ],
              "name": "givenCalldataReturnUint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                }
              ],
              "name": "givenCalldataRevert",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                },
                {
                  "internalType": "string",
                  "name": "message",
                  "type": "string"
                }
              ],
              "name": "givenCalldataRevertWithMessage",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                }
              ],
              "name": "givenCalldataRunOutOfGas",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "method",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "response",
                  "type": "bytes"
                }
              ],
              "name": "givenMethodReturn",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "method",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "response",
                  "type": "address"
                }
              ],
              "name": "givenMethodReturnAddress",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "method",
                  "type": "bytes"
                },
                {
                  "internalType": "bool",
                  "name": "response",
                  "type": "bool"
                }
              ],
              "name": "givenMethodReturnBool",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "method",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "response",
                  "type": "uint256"
                }
              ],
              "name": "givenMethodReturnUint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "method",
                  "type": "bytes"
                }
              ],
              "name": "givenMethodRevert",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "method",
                  "type": "bytes"
                },
                {
                  "internalType": "string",
                  "name": "message",
                  "type": "string"
                }
              ],
              "name": "givenMethodRevertWithMessage",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "method",
                  "type": "bytes"
                }
              ],
              "name": "givenMethodRunOutOfGas",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "invocationCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "call",
                  "type": "bytes"
                }
              ],
              "name": "invocationCountForCalldata",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "method",
                  "type": "bytes"
                }
              ],
              "name": "invocationCountForMethod",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "reset",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "givenAnyReturn(bytes)": {
                "details": "After calling this method, the mock will return `response` when it is called with any calldata that is not mocked more specifically below (e.g. using givenMethodReturn).",
                "params": {
                  "response": "ABI encoded response that will be returned if method is invoked"
                }
              },
              "givenCalldataReturn(bytes,bytes)": {
                "details": "After calling this method, the mock will return `response` when the given methodId is called with matching arguments. These exact calldataMocks will take precedence over all other calldataMocks.",
                "params": {
                  "call": "ABI encoded calldata (methodId and arguments)",
                  "response": "ABI encoded response that will be returned if contract is invoked with calldata"
                }
              },
              "givenMethodReturn(bytes,bytes)": {
                "details": "After calling this method, the mock will return `response` when the given methodId is called regardless of arguments. If the methodId and arguments are mocked more specifically (using `givenMethodAndArguments`) the latter will take precedence.",
                "params": {
                  "method": "ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it",
                  "response": "ABI encoded response that will be returned if method is invoked"
                }
              },
              "invocationCount()": {
                "details": "Returns the number of times anything has been called on this mock since last reset"
              },
              "invocationCountForCalldata(bytes)": {
                "details": "Returns the number of times this mock has been called with the exact calldata since last reset.",
                "params": {
                  "call": "ABI encoded calldata (methodId and arguments)"
                }
              },
              "invocationCountForMethod(bytes)": {
                "details": "Returns the number of times the given method has been called on this mock since last reset",
                "params": {
                  "method": "ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it"
                }
              },
              "reset()": {
                "details": "Resets all mocked methods and invocation counts."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "givenAnyReturn(bytes)": "d6fe9778",
              "givenAnyReturnAddress(address)": "682b4797",
              "givenAnyReturnBool(bool)": "36ff0ee5",
              "givenAnyReturnUint(uint256)": "af21ac78",
              "givenAnyRevert()": "e211b8a5",
              "givenAnyRevertWithMessage(string)": "87abab65",
              "givenAnyRunOutOfGas()": "3956dc6b",
              "givenCalldataReturn(bytes,bytes)": "61936594",
              "givenCalldataReturnAddress(bytes,address)": "b3901f29",
              "givenCalldataReturnBool(bytes,bool)": "5a3855ab",
              "givenCalldataReturnUint(bytes,uint256)": "d73ca0ac",
              "givenCalldataRevert(bytes)": "eb861f69",
              "givenCalldataRevertWithMessage(bytes,string)": "9eaeed75",
              "givenCalldataRunOutOfGas(bytes)": "21fed4d6",
              "givenMethodReturn(bytes,bytes)": "c6ee167f",
              "givenMethodReturnAddress(bytes,address)": "cf11ff5d",
              "givenMethodReturnBool(bytes,bool)": "6f400756",
              "givenMethodReturnUint(bytes,uint256)": "f5afa9c1",
              "givenMethodRevert(bytes)": "aa788c55",
              "givenMethodRevertWithMessage(bytes,string)": "9a1dc86b",
              "givenMethodRunOutOfGas(bytes)": "68ab6f2f",
              "invocationCount()": "0a20119f",
              "invocationCountForCalldata(bytes)": "586984a4",
              "invocationCountForMethod(bytes)": "4937c4f6",
              "reset()": "d826f88f"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"name\":\"givenAnyReturn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"response\",\"type\":\"address\"}],\"name\":\"givenAnyReturnAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"response\",\"type\":\"bool\"}],\"name\":\"givenAnyReturnBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"response\",\"type\":\"uint256\"}],\"name\":\"givenAnyReturnUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"givenAnyRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"givenAnyRevertWithMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"givenAnyRunOutOfGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"name\":\"givenCalldataReturn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"response\",\"type\":\"address\"}],\"name\":\"givenCalldataReturnAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"response\",\"type\":\"bool\"}],\"name\":\"givenCalldataReturnBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"response\",\"type\":\"uint256\"}],\"name\":\"givenCalldataReturnUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"}],\"name\":\"givenCalldataRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"givenCalldataRevertWithMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"}],\"name\":\"givenCalldataRunOutOfGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"method\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"name\":\"givenMethodReturn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"method\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"response\",\"type\":\"address\"}],\"name\":\"givenMethodReturnAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"method\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"response\",\"type\":\"bool\"}],\"name\":\"givenMethodReturnBool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"method\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"response\",\"type\":\"uint256\"}],\"name\":\"givenMethodReturnUint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"method\",\"type\":\"bytes\"}],\"name\":\"givenMethodRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"method\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"givenMethodRevertWithMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"method\",\"type\":\"bytes\"}],\"name\":\"givenMethodRunOutOfGas\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"invocationCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"call\",\"type\":\"bytes\"}],\"name\":\"invocationCountForCalldata\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"method\",\"type\":\"bytes\"}],\"name\":\"invocationCountForMethod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"givenAnyReturn(bytes)\":{\"details\":\"After calling this method, the mock will return `response` when it is called with any calldata that is not mocked more specifically below (e.g. using givenMethodReturn).\",\"params\":{\"response\":\"ABI encoded response that will be returned if method is invoked\"}},\"givenCalldataReturn(bytes,bytes)\":{\"details\":\"After calling this method, the mock will return `response` when the given methodId is called with matching arguments. These exact calldataMocks will take precedence over all other calldataMocks.\",\"params\":{\"call\":\"ABI encoded calldata (methodId and arguments)\",\"response\":\"ABI encoded response that will be returned if contract is invoked with calldata\"}},\"givenMethodReturn(bytes,bytes)\":{\"details\":\"After calling this method, the mock will return `response` when the given methodId is called regardless of arguments. If the methodId and arguments are mocked more specifically (using `givenMethodAndArguments`) the latter will take precedence.\",\"params\":{\"method\":\"ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it\",\"response\":\"ABI encoded response that will be returned if method is invoked\"}},\"invocationCount()\":{\"details\":\"Returns the number of times anything has been called on this mock since last reset\"},\"invocationCountForCalldata(bytes)\":{\"details\":\"Returns the number of times this mock has been called with the exact calldata since last reset.\",\"params\":{\"call\":\"ABI encoded calldata (methodId and arguments)\"}},\"invocationCountForMethod(bytes)\":{\"details\":\"Returns the number of times the given method has been called on this mock since last reset\",\"params\":{\"method\":\"ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it\"}},\"reset()\":{\"details\":\"Resets all mocked methods and invocation counts.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@gnosis.pm/mock-contract/contracts/MockContract.sol\":\"MockInterface\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@gnosis.pm/mock-contract/contracts/MockContract.sol\":{\"content\":\"pragma solidity ^0.6.0;\\n\\ninterface MockInterface {\\n\\t/**\\n\\t * @dev After calling this method, the mock will return `response` when it is called\\n\\t * with any calldata that is not mocked more specifically below\\n\\t * (e.g. using givenMethodReturn).\\n\\t * @param response ABI encoded response that will be returned if method is invoked\\n\\t */\\n\\tfunction givenAnyReturn(bytes calldata response) external;\\n\\tfunction givenAnyReturnBool(bool response) external;\\n\\tfunction givenAnyReturnUint(uint response) external;\\n\\tfunction givenAnyReturnAddress(address response) external;\\n\\n\\tfunction givenAnyRevert() external;\\n\\tfunction givenAnyRevertWithMessage(string calldata message) external;\\n\\tfunction givenAnyRunOutOfGas() external;\\n\\n\\t/**\\n\\t * @dev After calling this method, the mock will return `response` when the given\\n\\t * methodId is called regardless of arguments. If the methodId and arguments\\n\\t * are mocked more specifically (using `givenMethodAndArguments`) the latter\\n\\t * will take precedence.\\n\\t * @param method ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it\\n\\t * @param response ABI encoded response that will be returned if method is invoked\\n\\t */\\n\\tfunction givenMethodReturn(bytes calldata method, bytes calldata response) external;\\n\\tfunction givenMethodReturnBool(bytes calldata method, bool response) external;\\n\\tfunction givenMethodReturnUint(bytes calldata method, uint response) external;\\n\\tfunction givenMethodReturnAddress(bytes calldata method, address response) external;\\n\\n\\tfunction givenMethodRevert(bytes calldata method) external;\\n\\tfunction givenMethodRevertWithMessage(bytes calldata method, string calldata message) external;\\n\\tfunction givenMethodRunOutOfGas(bytes calldata method) external;\\n\\n\\t/**\\n\\t * @dev After calling this method, the mock will return `response` when the given\\n\\t * methodId is called with matching arguments. These exact calldataMocks will take\\n\\t * precedence over all other calldataMocks.\\n\\t * @param call ABI encoded calldata (methodId and arguments)\\n\\t * @param response ABI encoded response that will be returned if contract is invoked with calldata\\n\\t */\\n\\tfunction givenCalldataReturn(bytes calldata call, bytes calldata response) external;\\n\\tfunction givenCalldataReturnBool(bytes calldata call, bool response) external;\\n\\tfunction givenCalldataReturnUint(bytes calldata call, uint response) external;\\n\\tfunction givenCalldataReturnAddress(bytes calldata call, address response) external;\\n\\n\\tfunction givenCalldataRevert(bytes calldata call) external;\\n\\tfunction givenCalldataRevertWithMessage(bytes calldata call, string calldata message) external;\\n\\tfunction givenCalldataRunOutOfGas(bytes calldata call) external;\\n\\n\\t/**\\n\\t * @dev Returns the number of times anything has been called on this mock since last reset\\n\\t */\\n\\tfunction invocationCount() external returns (uint);\\n\\n\\t/**\\n\\t * @dev Returns the number of times the given method has been called on this mock since last reset\\n\\t * @param method ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it\\n\\t */\\n\\tfunction invocationCountForMethod(bytes calldata method) external returns (uint);\\n\\n\\t/**\\n\\t * @dev Returns the number of times this mock has been called with the exact calldata since last reset.\\n\\t * @param call ABI encoded calldata (methodId and arguments)\\n\\t */\\n\\tfunction invocationCountForCalldata(bytes calldata call) external returns (uint);\\n\\n\\t/**\\n\\t * @dev Resets all mocked methods and invocation counts.\\n\\t */\\n\\t function reset() external;\\n}\\n\\n/**\\n * Implementation of the MockInterface.\\n */\\ncontract MockContract is MockInterface {\\n\\tenum MockType { Return, Revert, OutOfGas }\\n\\t\\n\\tbytes32 public constant MOCKS_LIST_START = hex\\\"01\\\";\\n\\tbytes public constant MOCKS_LIST_END = \\\"0xff\\\";\\n\\tbytes32 public constant MOCKS_LIST_END_HASH = keccak256(MOCKS_LIST_END);\\n\\tbytes4 public constant SENTINEL_ANY_MOCKS = hex\\\"01\\\";\\n\\tbytes public constant DEFAULT_FALLBACK_VALUE = abi.encode(false);\\n\\n\\t// A linked list allows easy iteration and inclusion checks\\n\\tmapping(bytes32 => bytes) calldataMocks;\\n\\tmapping(bytes => MockType) calldataMockTypes;\\n\\tmapping(bytes => bytes) calldataExpectations;\\n\\tmapping(bytes => string) calldataRevertMessage;\\n\\tmapping(bytes32 => uint) calldataInvocations;\\n\\n\\tmapping(bytes4 => bytes4) methodIdMocks;\\n\\tmapping(bytes4 => MockType) methodIdMockTypes;\\n\\tmapping(bytes4 => bytes) methodIdExpectations;\\n\\tmapping(bytes4 => string) methodIdRevertMessages;\\n\\tmapping(bytes32 => uint) methodIdInvocations;\\n\\n\\tMockType fallbackMockType;\\n\\tbytes fallbackExpectation = DEFAULT_FALLBACK_VALUE;\\n\\tstring fallbackRevertMessage;\\n\\tuint invocations;\\n\\tuint resetCount;\\n\\n\\tconstructor() public {\\n\\t\\tcalldataMocks[MOCKS_LIST_START] = MOCKS_LIST_END;\\n\\t\\tmethodIdMocks[SENTINEL_ANY_MOCKS] = SENTINEL_ANY_MOCKS;\\n\\t}\\n\\n\\tfunction trackCalldataMock(bytes memory call) private {\\n\\t\\tbytes32 callHash = keccak256(call);\\n\\t\\tif (calldataMocks[callHash].length == 0) {\\n\\t\\t\\tcalldataMocks[callHash] = calldataMocks[MOCKS_LIST_START];\\n\\t\\t\\tcalldataMocks[MOCKS_LIST_START] = call;\\n\\t\\t}\\n\\t}\\n\\n\\tfunction trackMethodIdMock(bytes4 methodId) private {\\n\\t\\tif (methodIdMocks[methodId] == 0x0) {\\n\\t\\t\\tmethodIdMocks[methodId] = methodIdMocks[SENTINEL_ANY_MOCKS];\\n\\t\\t\\tmethodIdMocks[SENTINEL_ANY_MOCKS] = methodId;\\n\\t\\t}\\n\\t}\\n\\n\\tfunction _givenAnyReturn(bytes memory response) internal {\\n\\t\\tfallbackMockType = MockType.Return;\\n\\t\\tfallbackExpectation = response;\\n\\t}\\n\\n\\tfunction givenAnyReturn(bytes calldata response) override external {\\n\\t\\t_givenAnyReturn(response);\\n\\t}\\n\\n\\tfunction givenAnyReturnBool(bool response) override external {\\n\\t\\tuint flag = response ? 1 : 0;\\n\\t\\t_givenAnyReturn(uintToBytes(flag));\\n\\t}\\n\\n\\tfunction givenAnyReturnUint(uint response) override external {\\n\\t\\t_givenAnyReturn(uintToBytes(response));\\t\\n\\t}\\n\\n\\tfunction givenAnyReturnAddress(address response) override external {\\n\\t\\t_givenAnyReturn(uintToBytes(uint(response)));\\n\\t}\\n\\n\\tfunction givenAnyRevert() override external {\\n\\t\\tfallbackMockType = MockType.Revert;\\n\\t\\tfallbackRevertMessage = \\\"\\\";\\n\\t}\\n\\n\\tfunction givenAnyRevertWithMessage(string calldata message) override external {\\n\\t\\tfallbackMockType = MockType.Revert;\\n\\t\\tfallbackRevertMessage = message;\\n\\t}\\n\\n\\tfunction givenAnyRunOutOfGas() override external {\\n\\t\\tfallbackMockType = MockType.OutOfGas;\\n\\t}\\n\\n\\tfunction _givenCalldataReturn(bytes memory call, bytes memory response) private  {\\n\\t\\tcalldataMockTypes[call] = MockType.Return;\\n\\t\\tcalldataExpectations[call] = response;\\n\\t\\ttrackCalldataMock(call);\\n\\t}\\n\\n\\tfunction givenCalldataReturn(bytes calldata call, bytes calldata response) override external  {\\n\\t\\t_givenCalldataReturn(call, response);\\n\\t}\\n\\n\\tfunction givenCalldataReturnBool(bytes calldata call, bool response) override external {\\n\\t\\tuint flag = response ? 1 : 0;\\n\\t\\t_givenCalldataReturn(call, uintToBytes(flag));\\n\\t}\\n\\n\\tfunction givenCalldataReturnUint(bytes calldata call, uint response) override external {\\n\\t\\t_givenCalldataReturn(call, uintToBytes(response));\\n\\t}\\n\\n\\tfunction givenCalldataReturnAddress(bytes calldata call, address response) override external {\\n\\t\\t_givenCalldataReturn(call, uintToBytes(uint(response)));\\n\\t}\\n\\n\\tfunction _givenMethodReturn(bytes memory call, bytes memory response) private {\\n\\t\\tbytes4 method = bytesToBytes4(call);\\n\\t\\tmethodIdMockTypes[method] = MockType.Return;\\n\\t\\tmethodIdExpectations[method] = response;\\n\\t\\ttrackMethodIdMock(method);\\t\\t\\n\\t}\\n\\n\\tfunction givenMethodReturn(bytes calldata call, bytes calldata response) override external {\\n\\t\\t_givenMethodReturn(call, response);\\n\\t}\\n\\n\\tfunction givenMethodReturnBool(bytes calldata call, bool response) override external {\\n\\t\\tuint flag = response ? 1 : 0;\\n\\t\\t_givenMethodReturn(call, uintToBytes(flag));\\n\\t}\\n\\n\\tfunction givenMethodReturnUint(bytes calldata call, uint response) override external {\\n\\t\\t_givenMethodReturn(call, uintToBytes(response));\\n\\t}\\n\\n\\tfunction givenMethodReturnAddress(bytes calldata call, address response) override external {\\n\\t\\t_givenMethodReturn(call, uintToBytes(uint(response)));\\n\\t}\\n\\n\\tfunction givenCalldataRevert(bytes calldata call) override external {\\n\\t\\tcalldataMockTypes[call] = MockType.Revert;\\n\\t\\tcalldataRevertMessage[call] = \\\"\\\";\\n\\t\\ttrackCalldataMock(call);\\n\\t}\\n\\n\\tfunction givenMethodRevert(bytes calldata call) override external {\\n\\t\\tbytes4 method = bytesToBytes4(call);\\n\\t\\tmethodIdMockTypes[method] = MockType.Revert;\\n\\t\\ttrackMethodIdMock(method);\\t\\t\\n\\t}\\n\\n\\tfunction givenCalldataRevertWithMessage(bytes calldata call, string calldata message) override external {\\n\\t\\tcalldataMockTypes[call] = MockType.Revert;\\n\\t\\tcalldataRevertMessage[call] = message;\\n\\t\\ttrackCalldataMock(call);\\n\\t}\\n\\n\\tfunction givenMethodRevertWithMessage(bytes calldata call, string calldata message) override external {\\n\\t\\tbytes4 method = bytesToBytes4(call);\\n\\t\\tmethodIdMockTypes[method] = MockType.Revert;\\n\\t\\tmethodIdRevertMessages[method] = message;\\n\\t\\ttrackMethodIdMock(method);\\t\\t\\n\\t}\\n\\n\\tfunction givenCalldataRunOutOfGas(bytes calldata call) override external {\\n\\t\\tcalldataMockTypes[call] = MockType.OutOfGas;\\n\\t\\ttrackCalldataMock(call);\\n\\t}\\n\\n\\tfunction givenMethodRunOutOfGas(bytes calldata call) override external {\\n\\t\\tbytes4 method = bytesToBytes4(call);\\n\\t\\tmethodIdMockTypes[method] = MockType.OutOfGas;\\n\\t\\ttrackMethodIdMock(method);\\t\\n\\t}\\n\\n\\tfunction invocationCount() override external returns (uint) {\\n\\t\\treturn invocations;\\n\\t}\\n\\n\\tfunction invocationCountForMethod(bytes calldata call) override external returns (uint) {\\n\\t\\tbytes4 method = bytesToBytes4(call);\\n\\t\\treturn methodIdInvocations[keccak256(abi.encodePacked(resetCount, method))];\\n\\t}\\n\\n\\tfunction invocationCountForCalldata(bytes calldata call) override external returns (uint) {\\n\\t\\treturn calldataInvocations[keccak256(abi.encodePacked(resetCount, call))];\\n\\t}\\n\\n\\tfunction reset() override external {\\n\\t\\t// Reset all exact calldataMocks\\n\\t\\tbytes memory nextMock = calldataMocks[MOCKS_LIST_START];\\n\\t\\tbytes32 mockHash = keccak256(nextMock);\\n\\t\\t// We cannot compary bytes\\n\\t\\twhile(mockHash != MOCKS_LIST_END_HASH) {\\n\\t\\t\\t// Reset all mock maps\\n\\t\\t\\tcalldataMockTypes[nextMock] = MockType.Return;\\n\\t\\t\\tcalldataExpectations[nextMock] = hex\\\"\\\";\\n\\t\\t\\tcalldataRevertMessage[nextMock] = \\\"\\\";\\n\\t\\t\\t// Set next mock to remove\\n\\t\\t\\tnextMock = calldataMocks[mockHash];\\n\\t\\t\\t// Remove from linked list\\n\\t\\t\\tcalldataMocks[mockHash] = \\\"\\\";\\n\\t\\t\\t// Update mock hash\\n\\t\\t\\tmockHash = keccak256(nextMock);\\n\\t\\t}\\n\\t\\t// Clear list\\n\\t\\tcalldataMocks[MOCKS_LIST_START] = MOCKS_LIST_END;\\n\\n\\t\\t// Reset all any calldataMocks\\n\\t\\tbytes4 nextAnyMock = methodIdMocks[SENTINEL_ANY_MOCKS];\\n\\t\\twhile(nextAnyMock != SENTINEL_ANY_MOCKS) {\\n\\t\\t\\tbytes4 currentAnyMock = nextAnyMock;\\n\\t\\t\\tmethodIdMockTypes[currentAnyMock] = MockType.Return;\\n\\t\\t\\tmethodIdExpectations[currentAnyMock] = hex\\\"\\\";\\n\\t\\t\\tmethodIdRevertMessages[currentAnyMock] = \\\"\\\";\\n\\t\\t\\tnextAnyMock = methodIdMocks[currentAnyMock];\\n\\t\\t\\t// Remove from linked list\\n\\t\\t\\tmethodIdMocks[currentAnyMock] = 0x0;\\n\\t\\t}\\n\\t\\t// Clear list\\n\\t\\tmethodIdMocks[SENTINEL_ANY_MOCKS] = SENTINEL_ANY_MOCKS;\\n\\n\\t\\tfallbackExpectation = DEFAULT_FALLBACK_VALUE;\\n\\t\\tfallbackMockType = MockType.Return;\\n\\t\\tinvocations = 0;\\n\\t\\tresetCount += 1;\\n\\t}\\n\\n\\tfunction useAllGas() private {\\n\\t\\twhile(true) {\\n\\t\\t\\tbool s;\\n\\t\\t\\tassembly {\\n\\t\\t\\t\\t//expensive call to EC multiply contract\\n\\t\\t\\t\\ts := call(sub(gas(), 2000), 6, 0, 0x0, 0xc0, 0x0, 0x60)\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tfunction bytesToBytes4(bytes memory b) private pure returns (bytes4) {\\n\\t\\tbytes4 out;\\n\\t\\tfor (uint i = 0; i < 4; i++) {\\n\\t\\t\\tout |= bytes4(b[i] & 0xFF) >> (i * 8);\\n\\t\\t}\\n\\t\\treturn out;\\n\\t}\\n\\n\\tfunction uintToBytes(uint256 x) private pure returns (bytes memory b) {\\n\\t\\tb = new bytes(32);\\n\\t\\tassembly { mstore(add(b, 32), x) }\\n\\t}\\n\\n\\tfunction updateInvocationCount(bytes4 methodId, bytes memory originalMsgData) public {\\n\\t\\trequire(msg.sender == address(this), \\\"Can only be called from the contract itself\\\");\\n\\t\\tinvocations += 1;\\n\\t\\tmethodIdInvocations[keccak256(abi.encodePacked(resetCount, methodId))] += 1;\\n\\t\\tcalldataInvocations[keccak256(abi.encodePacked(resetCount, originalMsgData))] += 1;\\n\\t}\\n\\n\\tfallback () payable external {\\n\\t\\tbytes4 methodId;\\n\\t\\tassembly {\\n\\t\\t\\tmethodId := calldataload(0)\\n\\t\\t}\\n\\n\\t\\t// First, check exact matching overrides\\n\\t\\tif (calldataMockTypes[msg.data] == MockType.Revert) {\\n\\t\\t\\trevert(calldataRevertMessage[msg.data]);\\n\\t\\t}\\n\\t\\tif (calldataMockTypes[msg.data] == MockType.OutOfGas) {\\n\\t\\t\\tuseAllGas();\\n\\t\\t}\\n\\t\\tbytes memory result = calldataExpectations[msg.data];\\n\\n\\t\\t// Then check method Id overrides\\n\\t\\tif (result.length == 0) {\\n\\t\\t\\tif (methodIdMockTypes[methodId] == MockType.Revert) {\\n\\t\\t\\t\\trevert(methodIdRevertMessages[methodId]);\\n\\t\\t\\t}\\n\\t\\t\\tif (methodIdMockTypes[methodId] == MockType.OutOfGas) {\\n\\t\\t\\t\\tuseAllGas();\\n\\t\\t\\t}\\n\\t\\t\\tresult = methodIdExpectations[methodId];\\n\\t\\t}\\n\\n\\t\\t// Last, use the fallback override\\n\\t\\tif (result.length == 0) {\\n\\t\\t\\tif (fallbackMockType == MockType.Revert) {\\n\\t\\t\\t\\trevert(fallbackRevertMessage);\\n\\t\\t\\t}\\n\\t\\t\\tif (fallbackMockType == MockType.OutOfGas) {\\n\\t\\t\\t\\tuseAllGas();\\n\\t\\t\\t}\\n\\t\\t\\tresult = fallbackExpectation;\\n\\t\\t}\\n\\n\\t\\t// Record invocation as separate call so we don't rollback in case we are called with STATICCALL\\n\\t\\t(, bytes memory r) = address(this).call{gas: 100000}(abi.encodeWithSignature(\\\"updateInvocationCount(bytes4,bytes)\\\", methodId, msg.data));\\n\\t\\tassert(r.length == 0);\\n\\t\\t\\n\\t\\tassembly {\\n\\t\\t\\treturn(add(0x20, result), mload(result))\\n\\t\\t}\\n\\t}\\n}\\n\",\"keccak256\":\"0x7dfa539d7cb818132cafb963b407232c26d409ca912680691c59879e07014aa9\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/test/Token.sol": {
        "Token": {
          "abi": [
            {
              "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"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "transfer(address,uint256)": "a9059cbb"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/Token.sol\":\"Token\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@gnosis.pm/mock-contract/contracts/MockContract.sol\":{\"content\":\"pragma solidity ^0.6.0;\\n\\ninterface MockInterface {\\n\\t/**\\n\\t * @dev After calling this method, the mock will return `response` when it is called\\n\\t * with any calldata that is not mocked more specifically below\\n\\t * (e.g. using givenMethodReturn).\\n\\t * @param response ABI encoded response that will be returned if method is invoked\\n\\t */\\n\\tfunction givenAnyReturn(bytes calldata response) external;\\n\\tfunction givenAnyReturnBool(bool response) external;\\n\\tfunction givenAnyReturnUint(uint response) external;\\n\\tfunction givenAnyReturnAddress(address response) external;\\n\\n\\tfunction givenAnyRevert() external;\\n\\tfunction givenAnyRevertWithMessage(string calldata message) external;\\n\\tfunction givenAnyRunOutOfGas() external;\\n\\n\\t/**\\n\\t * @dev After calling this method, the mock will return `response` when the given\\n\\t * methodId is called regardless of arguments. If the methodId and arguments\\n\\t * are mocked more specifically (using `givenMethodAndArguments`) the latter\\n\\t * will take precedence.\\n\\t * @param method ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it\\n\\t * @param response ABI encoded response that will be returned if method is invoked\\n\\t */\\n\\tfunction givenMethodReturn(bytes calldata method, bytes calldata response) external;\\n\\tfunction givenMethodReturnBool(bytes calldata method, bool response) external;\\n\\tfunction givenMethodReturnUint(bytes calldata method, uint response) external;\\n\\tfunction givenMethodReturnAddress(bytes calldata method, address response) external;\\n\\n\\tfunction givenMethodRevert(bytes calldata method) external;\\n\\tfunction givenMethodRevertWithMessage(bytes calldata method, string calldata message) external;\\n\\tfunction givenMethodRunOutOfGas(bytes calldata method) external;\\n\\n\\t/**\\n\\t * @dev After calling this method, the mock will return `response` when the given\\n\\t * methodId is called with matching arguments. These exact calldataMocks will take\\n\\t * precedence over all other calldataMocks.\\n\\t * @param call ABI encoded calldata (methodId and arguments)\\n\\t * @param response ABI encoded response that will be returned if contract is invoked with calldata\\n\\t */\\n\\tfunction givenCalldataReturn(bytes calldata call, bytes calldata response) external;\\n\\tfunction givenCalldataReturnBool(bytes calldata call, bool response) external;\\n\\tfunction givenCalldataReturnUint(bytes calldata call, uint response) external;\\n\\tfunction givenCalldataReturnAddress(bytes calldata call, address response) external;\\n\\n\\tfunction givenCalldataRevert(bytes calldata call) external;\\n\\tfunction givenCalldataRevertWithMessage(bytes calldata call, string calldata message) external;\\n\\tfunction givenCalldataRunOutOfGas(bytes calldata call) external;\\n\\n\\t/**\\n\\t * @dev Returns the number of times anything has been called on this mock since last reset\\n\\t */\\n\\tfunction invocationCount() external returns (uint);\\n\\n\\t/**\\n\\t * @dev Returns the number of times the given method has been called on this mock since last reset\\n\\t * @param method ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it\\n\\t */\\n\\tfunction invocationCountForMethod(bytes calldata method) external returns (uint);\\n\\n\\t/**\\n\\t * @dev Returns the number of times this mock has been called with the exact calldata since last reset.\\n\\t * @param call ABI encoded calldata (methodId and arguments)\\n\\t */\\n\\tfunction invocationCountForCalldata(bytes calldata call) external returns (uint);\\n\\n\\t/**\\n\\t * @dev Resets all mocked methods and invocation counts.\\n\\t */\\n\\t function reset() external;\\n}\\n\\n/**\\n * Implementation of the MockInterface.\\n */\\ncontract MockContract is MockInterface {\\n\\tenum MockType { Return, Revert, OutOfGas }\\n\\t\\n\\tbytes32 public constant MOCKS_LIST_START = hex\\\"01\\\";\\n\\tbytes public constant MOCKS_LIST_END = \\\"0xff\\\";\\n\\tbytes32 public constant MOCKS_LIST_END_HASH = keccak256(MOCKS_LIST_END);\\n\\tbytes4 public constant SENTINEL_ANY_MOCKS = hex\\\"01\\\";\\n\\tbytes public constant DEFAULT_FALLBACK_VALUE = abi.encode(false);\\n\\n\\t// A linked list allows easy iteration and inclusion checks\\n\\tmapping(bytes32 => bytes) calldataMocks;\\n\\tmapping(bytes => MockType) calldataMockTypes;\\n\\tmapping(bytes => bytes) calldataExpectations;\\n\\tmapping(bytes => string) calldataRevertMessage;\\n\\tmapping(bytes32 => uint) calldataInvocations;\\n\\n\\tmapping(bytes4 => bytes4) methodIdMocks;\\n\\tmapping(bytes4 => MockType) methodIdMockTypes;\\n\\tmapping(bytes4 => bytes) methodIdExpectations;\\n\\tmapping(bytes4 => string) methodIdRevertMessages;\\n\\tmapping(bytes32 => uint) methodIdInvocations;\\n\\n\\tMockType fallbackMockType;\\n\\tbytes fallbackExpectation = DEFAULT_FALLBACK_VALUE;\\n\\tstring fallbackRevertMessage;\\n\\tuint invocations;\\n\\tuint resetCount;\\n\\n\\tconstructor() public {\\n\\t\\tcalldataMocks[MOCKS_LIST_START] = MOCKS_LIST_END;\\n\\t\\tmethodIdMocks[SENTINEL_ANY_MOCKS] = SENTINEL_ANY_MOCKS;\\n\\t}\\n\\n\\tfunction trackCalldataMock(bytes memory call) private {\\n\\t\\tbytes32 callHash = keccak256(call);\\n\\t\\tif (calldataMocks[callHash].length == 0) {\\n\\t\\t\\tcalldataMocks[callHash] = calldataMocks[MOCKS_LIST_START];\\n\\t\\t\\tcalldataMocks[MOCKS_LIST_START] = call;\\n\\t\\t}\\n\\t}\\n\\n\\tfunction trackMethodIdMock(bytes4 methodId) private {\\n\\t\\tif (methodIdMocks[methodId] == 0x0) {\\n\\t\\t\\tmethodIdMocks[methodId] = methodIdMocks[SENTINEL_ANY_MOCKS];\\n\\t\\t\\tmethodIdMocks[SENTINEL_ANY_MOCKS] = methodId;\\n\\t\\t}\\n\\t}\\n\\n\\tfunction _givenAnyReturn(bytes memory response) internal {\\n\\t\\tfallbackMockType = MockType.Return;\\n\\t\\tfallbackExpectation = response;\\n\\t}\\n\\n\\tfunction givenAnyReturn(bytes calldata response) override external {\\n\\t\\t_givenAnyReturn(response);\\n\\t}\\n\\n\\tfunction givenAnyReturnBool(bool response) override external {\\n\\t\\tuint flag = response ? 1 : 0;\\n\\t\\t_givenAnyReturn(uintToBytes(flag));\\n\\t}\\n\\n\\tfunction givenAnyReturnUint(uint response) override external {\\n\\t\\t_givenAnyReturn(uintToBytes(response));\\t\\n\\t}\\n\\n\\tfunction givenAnyReturnAddress(address response) override external {\\n\\t\\t_givenAnyReturn(uintToBytes(uint(response)));\\n\\t}\\n\\n\\tfunction givenAnyRevert() override external {\\n\\t\\tfallbackMockType = MockType.Revert;\\n\\t\\tfallbackRevertMessage = \\\"\\\";\\n\\t}\\n\\n\\tfunction givenAnyRevertWithMessage(string calldata message) override external {\\n\\t\\tfallbackMockType = MockType.Revert;\\n\\t\\tfallbackRevertMessage = message;\\n\\t}\\n\\n\\tfunction givenAnyRunOutOfGas() override external {\\n\\t\\tfallbackMockType = MockType.OutOfGas;\\n\\t}\\n\\n\\tfunction _givenCalldataReturn(bytes memory call, bytes memory response) private  {\\n\\t\\tcalldataMockTypes[call] = MockType.Return;\\n\\t\\tcalldataExpectations[call] = response;\\n\\t\\ttrackCalldataMock(call);\\n\\t}\\n\\n\\tfunction givenCalldataReturn(bytes calldata call, bytes calldata response) override external  {\\n\\t\\t_givenCalldataReturn(call, response);\\n\\t}\\n\\n\\tfunction givenCalldataReturnBool(bytes calldata call, bool response) override external {\\n\\t\\tuint flag = response ? 1 : 0;\\n\\t\\t_givenCalldataReturn(call, uintToBytes(flag));\\n\\t}\\n\\n\\tfunction givenCalldataReturnUint(bytes calldata call, uint response) override external {\\n\\t\\t_givenCalldataReturn(call, uintToBytes(response));\\n\\t}\\n\\n\\tfunction givenCalldataReturnAddress(bytes calldata call, address response) override external {\\n\\t\\t_givenCalldataReturn(call, uintToBytes(uint(response)));\\n\\t}\\n\\n\\tfunction _givenMethodReturn(bytes memory call, bytes memory response) private {\\n\\t\\tbytes4 method = bytesToBytes4(call);\\n\\t\\tmethodIdMockTypes[method] = MockType.Return;\\n\\t\\tmethodIdExpectations[method] = response;\\n\\t\\ttrackMethodIdMock(method);\\t\\t\\n\\t}\\n\\n\\tfunction givenMethodReturn(bytes calldata call, bytes calldata response) override external {\\n\\t\\t_givenMethodReturn(call, response);\\n\\t}\\n\\n\\tfunction givenMethodReturnBool(bytes calldata call, bool response) override external {\\n\\t\\tuint flag = response ? 1 : 0;\\n\\t\\t_givenMethodReturn(call, uintToBytes(flag));\\n\\t}\\n\\n\\tfunction givenMethodReturnUint(bytes calldata call, uint response) override external {\\n\\t\\t_givenMethodReturn(call, uintToBytes(response));\\n\\t}\\n\\n\\tfunction givenMethodReturnAddress(bytes calldata call, address response) override external {\\n\\t\\t_givenMethodReturn(call, uintToBytes(uint(response)));\\n\\t}\\n\\n\\tfunction givenCalldataRevert(bytes calldata call) override external {\\n\\t\\tcalldataMockTypes[call] = MockType.Revert;\\n\\t\\tcalldataRevertMessage[call] = \\\"\\\";\\n\\t\\ttrackCalldataMock(call);\\n\\t}\\n\\n\\tfunction givenMethodRevert(bytes calldata call) override external {\\n\\t\\tbytes4 method = bytesToBytes4(call);\\n\\t\\tmethodIdMockTypes[method] = MockType.Revert;\\n\\t\\ttrackMethodIdMock(method);\\t\\t\\n\\t}\\n\\n\\tfunction givenCalldataRevertWithMessage(bytes calldata call, string calldata message) override external {\\n\\t\\tcalldataMockTypes[call] = MockType.Revert;\\n\\t\\tcalldataRevertMessage[call] = message;\\n\\t\\ttrackCalldataMock(call);\\n\\t}\\n\\n\\tfunction givenMethodRevertWithMessage(bytes calldata call, string calldata message) override external {\\n\\t\\tbytes4 method = bytesToBytes4(call);\\n\\t\\tmethodIdMockTypes[method] = MockType.Revert;\\n\\t\\tmethodIdRevertMessages[method] = message;\\n\\t\\ttrackMethodIdMock(method);\\t\\t\\n\\t}\\n\\n\\tfunction givenCalldataRunOutOfGas(bytes calldata call) override external {\\n\\t\\tcalldataMockTypes[call] = MockType.OutOfGas;\\n\\t\\ttrackCalldataMock(call);\\n\\t}\\n\\n\\tfunction givenMethodRunOutOfGas(bytes calldata call) override external {\\n\\t\\tbytes4 method = bytesToBytes4(call);\\n\\t\\tmethodIdMockTypes[method] = MockType.OutOfGas;\\n\\t\\ttrackMethodIdMock(method);\\t\\n\\t}\\n\\n\\tfunction invocationCount() override external returns (uint) {\\n\\t\\treturn invocations;\\n\\t}\\n\\n\\tfunction invocationCountForMethod(bytes calldata call) override external returns (uint) {\\n\\t\\tbytes4 method = bytesToBytes4(call);\\n\\t\\treturn methodIdInvocations[keccak256(abi.encodePacked(resetCount, method))];\\n\\t}\\n\\n\\tfunction invocationCountForCalldata(bytes calldata call) override external returns (uint) {\\n\\t\\treturn calldataInvocations[keccak256(abi.encodePacked(resetCount, call))];\\n\\t}\\n\\n\\tfunction reset() override external {\\n\\t\\t// Reset all exact calldataMocks\\n\\t\\tbytes memory nextMock = calldataMocks[MOCKS_LIST_START];\\n\\t\\tbytes32 mockHash = keccak256(nextMock);\\n\\t\\t// We cannot compary bytes\\n\\t\\twhile(mockHash != MOCKS_LIST_END_HASH) {\\n\\t\\t\\t// Reset all mock maps\\n\\t\\t\\tcalldataMockTypes[nextMock] = MockType.Return;\\n\\t\\t\\tcalldataExpectations[nextMock] = hex\\\"\\\";\\n\\t\\t\\tcalldataRevertMessage[nextMock] = \\\"\\\";\\n\\t\\t\\t// Set next mock to remove\\n\\t\\t\\tnextMock = calldataMocks[mockHash];\\n\\t\\t\\t// Remove from linked list\\n\\t\\t\\tcalldataMocks[mockHash] = \\\"\\\";\\n\\t\\t\\t// Update mock hash\\n\\t\\t\\tmockHash = keccak256(nextMock);\\n\\t\\t}\\n\\t\\t// Clear list\\n\\t\\tcalldataMocks[MOCKS_LIST_START] = MOCKS_LIST_END;\\n\\n\\t\\t// Reset all any calldataMocks\\n\\t\\tbytes4 nextAnyMock = methodIdMocks[SENTINEL_ANY_MOCKS];\\n\\t\\twhile(nextAnyMock != SENTINEL_ANY_MOCKS) {\\n\\t\\t\\tbytes4 currentAnyMock = nextAnyMock;\\n\\t\\t\\tmethodIdMockTypes[currentAnyMock] = MockType.Return;\\n\\t\\t\\tmethodIdExpectations[currentAnyMock] = hex\\\"\\\";\\n\\t\\t\\tmethodIdRevertMessages[currentAnyMock] = \\\"\\\";\\n\\t\\t\\tnextAnyMock = methodIdMocks[currentAnyMock];\\n\\t\\t\\t// Remove from linked list\\n\\t\\t\\tmethodIdMocks[currentAnyMock] = 0x0;\\n\\t\\t}\\n\\t\\t// Clear list\\n\\t\\tmethodIdMocks[SENTINEL_ANY_MOCKS] = SENTINEL_ANY_MOCKS;\\n\\n\\t\\tfallbackExpectation = DEFAULT_FALLBACK_VALUE;\\n\\t\\tfallbackMockType = MockType.Return;\\n\\t\\tinvocations = 0;\\n\\t\\tresetCount += 1;\\n\\t}\\n\\n\\tfunction useAllGas() private {\\n\\t\\twhile(true) {\\n\\t\\t\\tbool s;\\n\\t\\t\\tassembly {\\n\\t\\t\\t\\t//expensive call to EC multiply contract\\n\\t\\t\\t\\ts := call(sub(gas(), 2000), 6, 0, 0x0, 0xc0, 0x0, 0x60)\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tfunction bytesToBytes4(bytes memory b) private pure returns (bytes4) {\\n\\t\\tbytes4 out;\\n\\t\\tfor (uint i = 0; i < 4; i++) {\\n\\t\\t\\tout |= bytes4(b[i] & 0xFF) >> (i * 8);\\n\\t\\t}\\n\\t\\treturn out;\\n\\t}\\n\\n\\tfunction uintToBytes(uint256 x) private pure returns (bytes memory b) {\\n\\t\\tb = new bytes(32);\\n\\t\\tassembly { mstore(add(b, 32), x) }\\n\\t}\\n\\n\\tfunction updateInvocationCount(bytes4 methodId, bytes memory originalMsgData) public {\\n\\t\\trequire(msg.sender == address(this), \\\"Can only be called from the contract itself\\\");\\n\\t\\tinvocations += 1;\\n\\t\\tmethodIdInvocations[keccak256(abi.encodePacked(resetCount, methodId))] += 1;\\n\\t\\tcalldataInvocations[keccak256(abi.encodePacked(resetCount, originalMsgData))] += 1;\\n\\t}\\n\\n\\tfallback () payable external {\\n\\t\\tbytes4 methodId;\\n\\t\\tassembly {\\n\\t\\t\\tmethodId := calldataload(0)\\n\\t\\t}\\n\\n\\t\\t// First, check exact matching overrides\\n\\t\\tif (calldataMockTypes[msg.data] == MockType.Revert) {\\n\\t\\t\\trevert(calldataRevertMessage[msg.data]);\\n\\t\\t}\\n\\t\\tif (calldataMockTypes[msg.data] == MockType.OutOfGas) {\\n\\t\\t\\tuseAllGas();\\n\\t\\t}\\n\\t\\tbytes memory result = calldataExpectations[msg.data];\\n\\n\\t\\t// Then check method Id overrides\\n\\t\\tif (result.length == 0) {\\n\\t\\t\\tif (methodIdMockTypes[methodId] == MockType.Revert) {\\n\\t\\t\\t\\trevert(methodIdRevertMessages[methodId]);\\n\\t\\t\\t}\\n\\t\\t\\tif (methodIdMockTypes[methodId] == MockType.OutOfGas) {\\n\\t\\t\\t\\tuseAllGas();\\n\\t\\t\\t}\\n\\t\\t\\tresult = methodIdExpectations[methodId];\\n\\t\\t}\\n\\n\\t\\t// Last, use the fallback override\\n\\t\\tif (result.length == 0) {\\n\\t\\t\\tif (fallbackMockType == MockType.Revert) {\\n\\t\\t\\t\\trevert(fallbackRevertMessage);\\n\\t\\t\\t}\\n\\t\\t\\tif (fallbackMockType == MockType.OutOfGas) {\\n\\t\\t\\t\\tuseAllGas();\\n\\t\\t\\t}\\n\\t\\t\\tresult = fallbackExpectation;\\n\\t\\t}\\n\\n\\t\\t// Record invocation as separate call so we don't rollback in case we are called with STATICCALL\\n\\t\\t(, bytes memory r) = address(this).call{gas: 100000}(abi.encodeWithSignature(\\\"updateInvocationCount(bytes4,bytes)\\\", methodId, msg.data));\\n\\t\\tassert(r.length == 0);\\n\\t\\t\\n\\t\\tassembly {\\n\\t\\t\\treturn(add(0x20, result), mload(result))\\n\\t\\t}\\n\\t}\\n}\\n\",\"keccak256\":\"0x7dfa539d7cb818132cafb963b407232c26d409ca912680691c59879e07014aa9\"},\"contracts/test/Token.sol\":{\"content\":\"// SPDX-License-Identifier: LGPL-3.0-only\\npragma solidity >=0.6.0 <0.7.0;\\nimport \\\"@gnosis.pm/mock-contract/contracts/MockContract.sol\\\";\\n\\ninterface Token {\\n    function transfer(address _to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0x20494e50d71fb14ea12cfbb5b8cae4816c8321f37ef39991583e91bfe5a7d5a7\",\"license\":\"LGPL-3.0-only\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      }
    },
    "errors": [
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "@gnosis.pm/mock-contract/contracts/MockContract.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "@gnosis.pm/mock-contract/contracts/MockContract.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "3628",
        "formattedMessage": "@gnosis.pm/mock-contract/contracts/MockContract.sol:78:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.\ncontract MockContract is MockInterface {\n^ (Relevant source part starts here and spans across multiple lines).\n@gnosis.pm/mock-contract/contracts/MockContract.sol:328:2: The payable fallback function is defined here.\n\tfallback () payable external {\n ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.",
        "secondarySourceLocations": [
          {
            "end": 13100,
            "file": "@gnosis.pm/mock-contract/contracts/MockContract.sol",
            "message": "The payable fallback function is defined here.",
            "start": 11828
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 13102,
          "file": "@gnosis.pm/mock-contract/contracts/MockContract.sol",
          "start": 3610
        },
        "type": "Warning"
      }
    ],
    "sources": {
      "@gnosis.pm/mock-contract/contracts/MockContract.sol": {
        "ast": {
          "absolutePath": "@gnosis.pm/mock-contract/contracts/MockContract.sol",
          "exportedSymbols": {
            "MockContract": [
              1208
            ],
            "MockInterface": [
              152
            ]
          },
          "id": 1209,
          "license": null,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "^",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:23:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 152,
              "linearizedBaseContracts": [
                152
              ],
              "name": "MockInterface",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": {
                    "id": 2,
                    "nodeType": "StructuredDocumentation",
                    "src": "52:279:0",
                    "text": " @dev After calling this method, the mock will return `response` when it is called\n with any calldata that is not mocked more specifically below\n (e.g. using givenMethodReturn).\n @param response ABI encoded response that will be returned if method is invoked"
                  },
                  "functionSelector": "d6fe9778",
                  "id": 7,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 5,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7,
                        "src": "357:23:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "357:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "356:25:0"
                  },
                  "returnParameters": {
                    "id": 6,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "390:0:0"
                  },
                  "scope": 152,
                  "src": "333:58:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "36ff0ee5",
                  "id": 12,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyReturnBool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 10,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 12,
                        "src": "421:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "421:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "420:15:0"
                  },
                  "returnParameters": {
                    "id": 11,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "444:0:0"
                  },
                  "scope": 152,
                  "src": "393:52:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "af21ac78",
                  "id": 17,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyReturnUint",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 15,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 17,
                        "src": "475:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "475:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "474:15:0"
                  },
                  "returnParameters": {
                    "id": 16,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "498:0:0"
                  },
                  "scope": 152,
                  "src": "447:52:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "682b4797",
                  "id": 22,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyReturnAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 20,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 22,
                        "src": "532:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "532:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "531:18:0"
                  },
                  "returnParameters": {
                    "id": 21,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "558:0:0"
                  },
                  "scope": 152,
                  "src": "501:58:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "e211b8a5",
                  "id": 25,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyRevert",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 23,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "585:2:0"
                  },
                  "returnParameters": {
                    "id": 24,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "596:0:0"
                  },
                  "scope": 152,
                  "src": "562:35:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "87abab65",
                  "id": 30,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyRevertWithMessage",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 28,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27,
                        "mutability": "mutable",
                        "name": "message",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 30,
                        "src": "634:23:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "634:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "633:25:0"
                  },
                  "returnParameters": {
                    "id": 29,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "667:0:0"
                  },
                  "scope": 152,
                  "src": "599:69:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "3956dc6b",
                  "id": 33,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyRunOutOfGas",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 31,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "698:2:0"
                  },
                  "returnParameters": {
                    "id": 32,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "709:0:0"
                  },
                  "scope": 152,
                  "src": "670:40:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 34,
                    "nodeType": "StructuredDocumentation",
                    "src": "713:497:0",
                    "text": " @dev After calling this method, the mock will return `response` when the given\n methodId is called regardless of arguments. If the methodId and arguments\n are mocked more specifically (using `givenMethodAndArguments`) the latter\n will take precedence.\n @param method ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it\n @param response ABI encoded response that will be returned if method is invoked"
                  },
                  "functionSelector": "c6ee167f",
                  "id": 41,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 39,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 36,
                        "mutability": "mutable",
                        "name": "method",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 41,
                        "src": "1239:21:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 35,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1239:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 38,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 41,
                        "src": "1262:23:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 37,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1262:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1238:48:0"
                  },
                  "returnParameters": {
                    "id": 40,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1295:0:0"
                  },
                  "scope": 152,
                  "src": "1212:84:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "6f400756",
                  "id": 48,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodReturnBool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 46,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 43,
                        "mutability": "mutable",
                        "name": "method",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 48,
                        "src": "1329:21:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 42,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1329:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 45,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 48,
                        "src": "1352:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 44,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1352:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1328:38:0"
                  },
                  "returnParameters": {
                    "id": 47,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1375:0:0"
                  },
                  "scope": 152,
                  "src": "1298:78:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "f5afa9c1",
                  "id": 55,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodReturnUint",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 53,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 50,
                        "mutability": "mutable",
                        "name": "method",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 55,
                        "src": "1409:21:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 49,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1409:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 52,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 55,
                        "src": "1432:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 51,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "1432:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1408:38:0"
                  },
                  "returnParameters": {
                    "id": 54,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1455:0:0"
                  },
                  "scope": 152,
                  "src": "1378:78:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "cf11ff5d",
                  "id": 62,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodReturnAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 60,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 57,
                        "mutability": "mutable",
                        "name": "method",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 62,
                        "src": "1492:21:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 56,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1492:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 59,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 62,
                        "src": "1515:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 58,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1515:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1491:41:0"
                  },
                  "returnParameters": {
                    "id": 61,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1541:0:0"
                  },
                  "scope": 152,
                  "src": "1458:84:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "aa788c55",
                  "id": 67,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodRevert",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 65,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 64,
                        "mutability": "mutable",
                        "name": "method",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 67,
                        "src": "1572:21:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 63,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1572:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1571:23:0"
                  },
                  "returnParameters": {
                    "id": 66,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1603:0:0"
                  },
                  "scope": 152,
                  "src": "1545:59:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "9a1dc86b",
                  "id": 74,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodRevertWithMessage",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 72,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 69,
                        "mutability": "mutable",
                        "name": "method",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 74,
                        "src": "1644:21:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 68,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1644:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 71,
                        "mutability": "mutable",
                        "name": "message",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 74,
                        "src": "1667:23:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 70,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1667:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1643:48:0"
                  },
                  "returnParameters": {
                    "id": 73,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1700:0:0"
                  },
                  "scope": 152,
                  "src": "1606:95:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "68ab6f2f",
                  "id": 79,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodRunOutOfGas",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 77,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 76,
                        "mutability": "mutable",
                        "name": "method",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 79,
                        "src": "1735:21:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 75,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1735:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "1734:23:0"
                  },
                  "returnParameters": {
                    "id": 78,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1766:0:0"
                  },
                  "scope": 152,
                  "src": "1703:64:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 80,
                    "nodeType": "StructuredDocumentation",
                    "src": "1770:382:0",
                    "text": " @dev After calling this method, the mock will return `response` when the given\n methodId is called with matching arguments. These exact calldataMocks will take\n precedence over all other calldataMocks.\n @param call ABI encoded calldata (methodId and arguments)\n @param response ABI encoded response that will be returned if contract is invoked with calldata"
                  },
                  "functionSelector": "61936594",
                  "id": 87,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 85,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 82,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 87,
                        "src": "2183:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 81,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2183:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 84,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 87,
                        "src": "2204:23:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 83,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2204:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2182:46:0"
                  },
                  "returnParameters": {
                    "id": 86,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2237:0:0"
                  },
                  "scope": 152,
                  "src": "2154:84:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "5a3855ab",
                  "id": 94,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataReturnBool",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 92,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 89,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 94,
                        "src": "2273:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 88,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2273:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 91,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 94,
                        "src": "2294:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 90,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2294:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2272:36:0"
                  },
                  "returnParameters": {
                    "id": 93,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2317:0:0"
                  },
                  "scope": 152,
                  "src": "2240:78:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "d73ca0ac",
                  "id": 101,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataReturnUint",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 99,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 96,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 101,
                        "src": "2353:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 95,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2353:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 98,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 101,
                        "src": "2374:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 97,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2374:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2352:36:0"
                  },
                  "returnParameters": {
                    "id": 100,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2397:0:0"
                  },
                  "scope": 152,
                  "src": "2320:78:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "b3901f29",
                  "id": 108,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataReturnAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 106,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 103,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 108,
                        "src": "2436:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 102,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2436:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 105,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 108,
                        "src": "2457:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 104,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2457:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2435:39:0"
                  },
                  "returnParameters": {
                    "id": 107,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2483:0:0"
                  },
                  "scope": 152,
                  "src": "2400:84:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "eb861f69",
                  "id": 113,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataRevert",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 111,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 110,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 113,
                        "src": "2516:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 109,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2516:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2515:21:0"
                  },
                  "returnParameters": {
                    "id": 112,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2545:0:0"
                  },
                  "scope": 152,
                  "src": "2487:59:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "9eaeed75",
                  "id": 120,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataRevertWithMessage",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 118,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 115,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 120,
                        "src": "2588:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 114,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2588:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 117,
                        "mutability": "mutable",
                        "name": "message",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 120,
                        "src": "2609:23:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 116,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2609:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2587:46:0"
                  },
                  "returnParameters": {
                    "id": 119,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2642:0:0"
                  },
                  "scope": 152,
                  "src": "2548:95:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "21fed4d6",
                  "id": 125,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataRunOutOfGas",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 123,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 122,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 125,
                        "src": "2679:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 121,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2679:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2678:21:0"
                  },
                  "returnParameters": {
                    "id": 124,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2708:0:0"
                  },
                  "scope": 152,
                  "src": "2645:64:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 126,
                    "nodeType": "StructuredDocumentation",
                    "src": "2712:100:0",
                    "text": " @dev Returns the number of times anything has been called on this mock since last reset"
                  },
                  "functionSelector": "0a20119f",
                  "id": 131,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "invocationCount",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 127,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2838:2:0"
                  },
                  "returnParameters": {
                    "id": 130,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 129,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 131,
                        "src": "2859:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 128,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2859:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "2858:6:0"
                  },
                  "scope": 152,
                  "src": "2814:51:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 132,
                    "nodeType": "StructuredDocumentation",
                    "src": "2868:248:0",
                    "text": " @dev Returns the number of times the given method has been called on this mock since last reset\n @param method ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it"
                  },
                  "functionSelector": "4937c4f6",
                  "id": 139,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "invocationCountForMethod",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 135,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 134,
                        "mutability": "mutable",
                        "name": "method",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 139,
                        "src": "3152:21:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 133,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3152:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3151:23:0"
                  },
                  "returnParameters": {
                    "id": 138,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 137,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 139,
                        "src": "3193:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 136,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3193:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3192:6:0"
                  },
                  "scope": 152,
                  "src": "3118:81:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 140,
                    "nodeType": "StructuredDocumentation",
                    "src": "3202:175:0",
                    "text": " @dev Returns the number of times this mock has been called with the exact calldata since last reset.\n @param call ABI encoded calldata (methodId and arguments)"
                  },
                  "functionSelector": "586984a4",
                  "id": 147,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "invocationCountForCalldata",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 143,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 142,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 147,
                        "src": "3415:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 141,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3415:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3414:21:0"
                  },
                  "returnParameters": {
                    "id": 146,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 145,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 147,
                        "src": "3454:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 144,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3454:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "3453:6:0"
                  },
                  "scope": 152,
                  "src": "3379:81:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": null,
                  "documentation": {
                    "id": 148,
                    "nodeType": "StructuredDocumentation",
                    "src": "3463:66:0",
                    "text": " @dev Resets all mocked methods and invocation counts."
                  },
                  "functionSelector": "d826f88f",
                  "id": 151,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "reset",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 149,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3546:2:0"
                  },
                  "returnParameters": {
                    "id": 150,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3557:0:0"
                  },
                  "scope": 152,
                  "src": "3532:26:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1209,
              "src": "25:3535:0"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "arguments": null,
                  "baseName": {
                    "contractScope": null,
                    "id": 154,
                    "name": "MockInterface",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 152,
                    "src": "3635:13:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MockInterface_$152",
                      "typeString": "contract MockInterface"
                    }
                  },
                  "id": 155,
                  "nodeType": "InheritanceSpecifier",
                  "src": "3635:13:0"
                }
              ],
              "contractDependencies": [
                152
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 153,
                "nodeType": "StructuredDocumentation",
                "src": "3562:47:0",
                "text": " Implementation of the MockInterface."
              },
              "fullyImplemented": true,
              "id": 1208,
              "linearizedBaseContracts": [
                1208,
                152
              ],
              "name": "MockContract",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "MockContract.MockType",
                  "id": 159,
                  "members": [
                    {
                      "id": 156,
                      "name": "Return",
                      "nodeType": "EnumValue",
                      "src": "3668:6:0"
                    },
                    {
                      "id": 157,
                      "name": "Revert",
                      "nodeType": "EnumValue",
                      "src": "3676:6:0"
                    },
                    {
                      "id": 158,
                      "name": "OutOfGas",
                      "nodeType": "EnumValue",
                      "src": "3684:8:0"
                    }
                  ],
                  "name": "MockType",
                  "nodeType": "EnumDefinition",
                  "src": "3652:42:0"
                },
                {
                  "constant": true,
                  "functionSelector": "67aad04a",
                  "id": 162,
                  "mutability": "constant",
                  "name": "MOCKS_LIST_START",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "3698:50:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 160,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3698:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "01",
                    "id": 161,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3741:7:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2",
                      "typeString": "literal_string \"\u0001\""
                    },
                    "value": "\u0001"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "7cd96ee4",
                  "id": 165,
                  "mutability": "constant",
                  "name": "MOCKS_LIST_END",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "3751:45:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 163,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3751:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "30786666",
                    "id": 164,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3790:6:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_420daffad4b177bce28bead5f76f7bc97ef63c3aae74c496db8ce6aafe9e6513",
                      "typeString": "literal_string \"0xff\""
                    },
                    "value": "0xff"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "2ed238dc",
                  "id": 170,
                  "mutability": "constant",
                  "name": "MOCKS_LIST_END_HASH",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "3799:71:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 166,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3799:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 168,
                        "name": "MOCKS_LIST_END",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 165,
                        "src": "3855:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 167,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "3845:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 169,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3845:25:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "f07da229",
                  "id": 173,
                  "mutability": "constant",
                  "name": "SENTINEL_ANY_MOCKS",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "3873:51:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 171,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "3873:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "hexValue": "01",
                    "id": 172,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3917:7:0",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2",
                      "typeString": "literal_string \"\u0001\""
                    },
                    "value": "\u0001"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "122aea81",
                  "id": 179,
                  "mutability": "constant",
                  "name": "DEFAULT_FALLBACK_VALUE",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "3927:64:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 174,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3927:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 177,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3985:5:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 175,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "3974:3:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 176,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encode",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3974:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3974:17:0",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 183,
                  "mutability": "mutable",
                  "name": "calldataMocks",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "4056:39:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                    "typeString": "mapping(bytes32 => bytes)"
                  },
                  "typeName": {
                    "id": 182,
                    "keyType": {
                      "id": 180,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4064:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4056:25:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                      "typeString": "mapping(bytes32 => bytes)"
                    },
                    "valueType": {
                      "id": 181,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "4075:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 187,
                  "mutability": "mutable",
                  "name": "calldataMockTypes",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "4098:44:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_enum$_MockType_$159_$",
                    "typeString": "mapping(bytes => enum MockContract.MockType)"
                  },
                  "typeName": {
                    "id": 186,
                    "keyType": {
                      "id": 184,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "4106:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4098:26:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_enum$_MockType_$159_$",
                      "typeString": "mapping(bytes => enum MockContract.MockType)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 185,
                      "name": "MockType",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 159,
                      "src": "4115:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_MockType_$159",
                        "typeString": "enum MockContract.MockType"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 191,
                  "mutability": "mutable",
                  "name": "calldataExpectations",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "4145:44:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bytes_storage_$",
                    "typeString": "mapping(bytes => bytes)"
                  },
                  "typeName": {
                    "id": 190,
                    "keyType": {
                      "id": 188,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "4153:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4145:23:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bytes_storage_$",
                      "typeString": "mapping(bytes => bytes)"
                    },
                    "valueType": {
                      "id": 189,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "4162:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 195,
                  "mutability": "mutable",
                  "name": "calldataRevertMessage",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "4192:46:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_string_storage_$",
                    "typeString": "mapping(bytes => string)"
                  },
                  "typeName": {
                    "id": 194,
                    "keyType": {
                      "id": 192,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "4200:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4192:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_string_storage_$",
                      "typeString": "mapping(bytes => string)"
                    },
                    "valueType": {
                      "id": 193,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "4209:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 199,
                  "mutability": "mutable",
                  "name": "calldataInvocations",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "4241:44:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "typeName": {
                    "id": 198,
                    "keyType": {
                      "id": 196,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4249:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4241:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                      "typeString": "mapping(bytes32 => uint256)"
                    },
                    "valueType": {
                      "id": 197,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "4260:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 203,
                  "mutability": "mutable",
                  "name": "methodIdMocks",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "4289:39:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                    "typeString": "mapping(bytes4 => bytes4)"
                  },
                  "typeName": {
                    "id": 202,
                    "keyType": {
                      "id": 200,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "4297:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4289:25:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                      "typeString": "mapping(bytes4 => bytes4)"
                    },
                    "valueType": {
                      "id": 201,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "4307:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 207,
                  "mutability": "mutable",
                  "name": "methodIdMockTypes",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "4331:45:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes4_$_t_enum$_MockType_$159_$",
                    "typeString": "mapping(bytes4 => enum MockContract.MockType)"
                  },
                  "typeName": {
                    "id": 206,
                    "keyType": {
                      "id": 204,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "4339:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4331:27:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_enum$_MockType_$159_$",
                      "typeString": "mapping(bytes4 => enum MockContract.MockType)"
                    },
                    "valueType": {
                      "contractScope": null,
                      "id": 205,
                      "name": "MockType",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 159,
                      "src": "4349:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_MockType_$159",
                        "typeString": "enum MockContract.MockType"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 211,
                  "mutability": "mutable",
                  "name": "methodIdExpectations",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "4379:45:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                    "typeString": "mapping(bytes4 => bytes)"
                  },
                  "typeName": {
                    "id": 210,
                    "keyType": {
                      "id": 208,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "4387:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4379:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                      "typeString": "mapping(bytes4 => bytes)"
                    },
                    "valueType": {
                      "id": 209,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "4397:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 215,
                  "mutability": "mutable",
                  "name": "methodIdRevertMessages",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "4427:48:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes4_$_t_string_storage_$",
                    "typeString": "mapping(bytes4 => string)"
                  },
                  "typeName": {
                    "id": 214,
                    "keyType": {
                      "id": 212,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "4435:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4427:25:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_string_storage_$",
                      "typeString": "mapping(bytes4 => string)"
                    },
                    "valueType": {
                      "id": 213,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "4445:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 219,
                  "mutability": "mutable",
                  "name": "methodIdInvocations",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "4478:44:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "typeName": {
                    "id": 218,
                    "keyType": {
                      "id": 216,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4486:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4478:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                      "typeString": "mapping(bytes32 => uint256)"
                    },
                    "valueType": {
                      "id": 217,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "4497:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 221,
                  "mutability": "mutable",
                  "name": "fallbackMockType",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "4526:25:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_MockType_$159",
                    "typeString": "enum MockContract.MockType"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 220,
                    "name": "MockType",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 159,
                    "src": "4526:8:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_MockType_$159",
                      "typeString": "enum MockContract.MockType"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 224,
                  "mutability": "mutable",
                  "name": "fallbackExpectation",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "4554:50:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 222,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4554:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": {
                    "argumentTypes": null,
                    "id": 223,
                    "name": "DEFAULT_FALLBACK_VALUE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 179,
                    "src": "4582:22:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 226,
                  "mutability": "mutable",
                  "name": "fallbackRevertMessage",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "4607:28:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 225,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4607:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 228,
                  "mutability": "mutable",
                  "name": "invocations",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "4638:16:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 227,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4638:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 230,
                  "mutability": "mutable",
                  "name": "resetCount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 1208,
                  "src": "4657:15:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 229,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4657:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 245,
                    "nodeType": "Block",
                    "src": "4697:114:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 233,
                              "name": "calldataMocks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 183,
                              "src": "4701:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                "typeString": "mapping(bytes32 => bytes storage ref)"
                              }
                            },
                            "id": 235,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 234,
                              "name": "MOCKS_LIST_START",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 162,
                              "src": "4715:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4701:31:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 236,
                            "name": "MOCKS_LIST_END",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 165,
                            "src": "4735:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "4701:48:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 238,
                        "nodeType": "ExpressionStatement",
                        "src": "4701:48:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 239,
                              "name": "methodIdMocks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 203,
                              "src": "4753:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                                "typeString": "mapping(bytes4 => bytes4)"
                              }
                            },
                            "id": 241,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 240,
                              "name": "SENTINEL_ANY_MOCKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 173,
                              "src": "4767:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4753:33:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 242,
                            "name": "SENTINEL_ANY_MOCKS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 173,
                            "src": "4789:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "4753:54:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 244,
                        "nodeType": "ExpressionStatement",
                        "src": "4753:54:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 246,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 231,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4687:2:0"
                  },
                  "returnParameters": {
                    "id": 232,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4697:0:0"
                  },
                  "scope": 1208,
                  "src": "4676:135:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 279,
                    "nodeType": "Block",
                    "src": "4868:196:0",
                    "statements": [
                      {
                        "assignments": [
                          252
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 252,
                            "mutability": "mutable",
                            "name": "callHash",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 279,
                            "src": "4872:16:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 251,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4872:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 256,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 254,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 248,
                              "src": "4901:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 253,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "4891:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 255,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4891:15:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4872:34:0"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 262,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 257,
                                "name": "calldataMocks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 183,
                                "src": "4914:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                  "typeString": "mapping(bytes32 => bytes storage ref)"
                                }
                              },
                              "id": 259,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 258,
                                "name": "callHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 252,
                                "src": "4928:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4914:23:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            },
                            "id": 260,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4914:30:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 261,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4948:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4914:35:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 278,
                        "nodeType": "IfStatement",
                        "src": "4910:151:0",
                        "trueBody": {
                          "id": 277,
                          "nodeType": "Block",
                          "src": "4951:110:0",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 269,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 263,
                                    "name": "calldataMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 183,
                                    "src": "4956:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                      "typeString": "mapping(bytes32 => bytes storage ref)"
                                    }
                                  },
                                  "id": 265,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 264,
                                    "name": "callHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 252,
                                    "src": "4970:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4956:23:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 266,
                                    "name": "calldataMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 183,
                                    "src": "4982:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                      "typeString": "mapping(bytes32 => bytes storage ref)"
                                    }
                                  },
                                  "id": 268,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 267,
                                    "name": "MOCKS_LIST_START",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 162,
                                    "src": "4996:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4982:31:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "src": "4956:57:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 270,
                              "nodeType": "ExpressionStatement",
                              "src": "4956:57:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 275,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 271,
                                    "name": "calldataMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 183,
                                    "src": "5018:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                      "typeString": "mapping(bytes32 => bytes storage ref)"
                                    }
                                  },
                                  "id": 273,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 272,
                                    "name": "MOCKS_LIST_START",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 162,
                                    "src": "5032:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5018:31:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 274,
                                  "name": "call",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 248,
                                  "src": "5052:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "5018:38:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 276,
                              "nodeType": "ExpressionStatement",
                              "src": "5018:38:0"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 280,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "trackCalldataMock",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 249,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 248,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 280,
                        "src": "4841:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 247,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4841:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "4840:19:0"
                  },
                  "returnParameters": {
                    "id": 250,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4868:0:0"
                  },
                  "scope": 1208,
                  "src": "4814:250:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 306,
                    "nodeType": "Block",
                    "src": "5119:161:0",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 289,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 285,
                              "name": "methodIdMocks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 203,
                              "src": "5127:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                                "typeString": "mapping(bytes4 => bytes4)"
                              }
                            },
                            "id": 287,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 286,
                              "name": "methodId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 282,
                              "src": "5141:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5127:23:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "307830",
                            "id": 288,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5154:3:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0x0"
                          },
                          "src": "5127:30:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 305,
                        "nodeType": "IfStatement",
                        "src": "5123:154:0",
                        "trueBody": {
                          "id": 304,
                          "nodeType": "Block",
                          "src": "5159:118:0",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 296,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 290,
                                    "name": "methodIdMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 203,
                                    "src": "5164:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                                      "typeString": "mapping(bytes4 => bytes4)"
                                    }
                                  },
                                  "id": 292,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 291,
                                    "name": "methodId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 282,
                                    "src": "5178:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5164:23:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 293,
                                    "name": "methodIdMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 203,
                                    "src": "5190:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                                      "typeString": "mapping(bytes4 => bytes4)"
                                    }
                                  },
                                  "id": 295,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 294,
                                    "name": "SENTINEL_ANY_MOCKS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 173,
                                    "src": "5204:18:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5190:33:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "5164:59:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 297,
                              "nodeType": "ExpressionStatement",
                              "src": "5164:59:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 302,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 298,
                                    "name": "methodIdMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 203,
                                    "src": "5228:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                                      "typeString": "mapping(bytes4 => bytes4)"
                                    }
                                  },
                                  "id": 300,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 299,
                                    "name": "SENTINEL_ANY_MOCKS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 173,
                                    "src": "5242:18:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5228:33:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 301,
                                  "name": "methodId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 282,
                                  "src": "5264:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "5228:44:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 303,
                              "nodeType": "ExpressionStatement",
                              "src": "5228:44:0"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 307,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "trackMethodIdMock",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 283,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 282,
                        "mutability": "mutable",
                        "name": "methodId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 307,
                        "src": "5094:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 281,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "5094:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5093:17:0"
                  },
                  "returnParameters": {
                    "id": 284,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5119:0:0"
                  },
                  "scope": 1208,
                  "src": "5067:213:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 321,
                    "nodeType": "Block",
                    "src": "5340:76:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 312,
                            "name": "fallbackMockType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 221,
                            "src": "5344:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 313,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 159,
                              "src": "5363:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 314,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Return",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5363:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "5344:34:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$159",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 316,
                        "nodeType": "ExpressionStatement",
                        "src": "5344:34:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 317,
                            "name": "fallbackExpectation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 224,
                            "src": "5382:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 318,
                            "name": "response",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 309,
                            "src": "5404:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "5382:30:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 320,
                        "nodeType": "ExpressionStatement",
                        "src": "5382:30:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 322,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_givenAnyReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 310,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 309,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 322,
                        "src": "5308:21:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 308,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5308:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5307:23:0"
                  },
                  "returnParameters": {
                    "id": 311,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5340:0:0"
                  },
                  "scope": 1208,
                  "src": "5283:133:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    7
                  ],
                  "body": {
                    "id": 332,
                    "nodeType": "Block",
                    "src": "5486:33:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 329,
                              "name": "response",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 324,
                              "src": "5506:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 328,
                            "name": "_givenAnyReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 322,
                            "src": "5490:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory)"
                            }
                          },
                          "id": 330,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5490:25:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 331,
                        "nodeType": "ExpressionStatement",
                        "src": "5490:25:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d6fe9778",
                  "id": 333,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 326,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5468:8:0"
                  },
                  "parameters": {
                    "id": 325,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 324,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 333,
                        "src": "5443:23:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 323,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5443:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5442:25:0"
                  },
                  "returnParameters": {
                    "id": 327,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5486:0:0"
                  },
                  "scope": 1208,
                  "src": "5419:100:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    12
                  ],
                  "body": {
                    "id": 352,
                    "nodeType": "Block",
                    "src": "5583:74:0",
                    "statements": [
                      {
                        "assignments": [
                          340
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 340,
                            "mutability": "mutable",
                            "name": "flag",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 352,
                            "src": "5587:9:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 339,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "5587:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 345,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "id": 341,
                            "name": "response",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 335,
                            "src": "5599:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 343,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5614:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "id": 344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "5599:16:0",
                          "trueExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 342,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5610:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5587:28:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 348,
                                  "name": "flag",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 340,
                                  "src": "5647:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 347,
                                "name": "uintToBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1025,
                                "src": "5635:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                }
                              },
                              "id": 349,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5635:17:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 346,
                            "name": "_givenAnyReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 322,
                            "src": "5619:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory)"
                            }
                          },
                          "id": 350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5619:34:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 351,
                        "nodeType": "ExpressionStatement",
                        "src": "5619:34:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "36ff0ee5",
                  "id": 353,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyReturnBool",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 337,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5565:8:0"
                  },
                  "parameters": {
                    "id": 336,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 335,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 353,
                        "src": "5550:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 334,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5550:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5549:15:0"
                  },
                  "returnParameters": {
                    "id": 338,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5583:0:0"
                  },
                  "scope": 1208,
                  "src": "5522:135:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    17
                  ],
                  "body": {
                    "id": 365,
                    "nodeType": "Block",
                    "src": "5721:47:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 361,
                                  "name": "response",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 355,
                                  "src": "5753:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 360,
                                "name": "uintToBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1025,
                                "src": "5741:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                }
                              },
                              "id": 362,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5741:21:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 359,
                            "name": "_givenAnyReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 322,
                            "src": "5725:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory)"
                            }
                          },
                          "id": 363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5725:38:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 364,
                        "nodeType": "ExpressionStatement",
                        "src": "5725:38:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "af21ac78",
                  "id": 366,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyReturnUint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 357,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5703:8:0"
                  },
                  "parameters": {
                    "id": 356,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 355,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 366,
                        "src": "5688:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 354,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5688:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5687:15:0"
                  },
                  "returnParameters": {
                    "id": 358,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5721:0:0"
                  },
                  "scope": 1208,
                  "src": "5660:108:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    22
                  ],
                  "body": {
                    "id": 381,
                    "nodeType": "Block",
                    "src": "5838:52:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 376,
                                      "name": "response",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 368,
                                      "src": "5875:8:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 375,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5870:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 374,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5870:4:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 377,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5870:14:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 373,
                                "name": "uintToBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1025,
                                "src": "5858:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                }
                              },
                              "id": 378,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5858:27:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 372,
                            "name": "_givenAnyReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 322,
                            "src": "5842:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory)"
                            }
                          },
                          "id": 379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5842:44:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 380,
                        "nodeType": "ExpressionStatement",
                        "src": "5842:44:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "682b4797",
                  "id": 382,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyReturnAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 370,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5820:8:0"
                  },
                  "parameters": {
                    "id": 369,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 368,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 382,
                        "src": "5802:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 367,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5802:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "5801:18:0"
                  },
                  "returnParameters": {
                    "id": 371,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5838:0:0"
                  },
                  "scope": 1208,
                  "src": "5771:119:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    25
                  ],
                  "body": {
                    "id": 395,
                    "nodeType": "Block",
                    "src": "5937:72:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 386,
                            "name": "fallbackMockType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 221,
                            "src": "5941:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 387,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 159,
                              "src": "5960:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 388,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Revert",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5960:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "5941:34:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$159",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 390,
                        "nodeType": "ExpressionStatement",
                        "src": "5941:34:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 391,
                            "name": "fallbackRevertMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 226,
                            "src": "5979:21:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "",
                            "id": 392,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6003:2:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            },
                            "value": ""
                          },
                          "src": "5979:26:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 394,
                        "nodeType": "ExpressionStatement",
                        "src": "5979:26:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "e211b8a5",
                  "id": 396,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyRevert",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 384,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5919:8:0"
                  },
                  "parameters": {
                    "id": 383,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5916:2:0"
                  },
                  "returnParameters": {
                    "id": 385,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5937:0:0"
                  },
                  "scope": 1208,
                  "src": "5893:116:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    30
                  ],
                  "body": {
                    "id": 411,
                    "nodeType": "Block",
                    "src": "6090:77:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 402,
                            "name": "fallbackMockType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 221,
                            "src": "6094:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 403,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 159,
                              "src": "6113:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 404,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Revert",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6113:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "6094:34:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$159",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 406,
                        "nodeType": "ExpressionStatement",
                        "src": "6094:34:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 407,
                            "name": "fallbackRevertMessage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 226,
                            "src": "6132:21:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 408,
                            "name": "message",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 398,
                            "src": "6156:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "6132:31:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 410,
                        "nodeType": "ExpressionStatement",
                        "src": "6132:31:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "87abab65",
                  "id": 412,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyRevertWithMessage",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 400,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6072:8:0"
                  },
                  "parameters": {
                    "id": 399,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 398,
                        "mutability": "mutable",
                        "name": "message",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 412,
                        "src": "6047:23:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 397,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6047:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6046:25:0"
                  },
                  "returnParameters": {
                    "id": 401,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6090:0:0"
                  },
                  "scope": 1208,
                  "src": "6012:155:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    33
                  ],
                  "body": {
                    "id": 421,
                    "nodeType": "Block",
                    "src": "6219:44:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 419,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 416,
                            "name": "fallbackMockType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 221,
                            "src": "6223:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 417,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 159,
                              "src": "6242:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 418,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "OutOfGas",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6242:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "6223:36:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$159",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 420,
                        "nodeType": "ExpressionStatement",
                        "src": "6223:36:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "3956dc6b",
                  "id": 422,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenAnyRunOutOfGas",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 414,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6201:8:0"
                  },
                  "parameters": {
                    "id": 413,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6198:2:0"
                  },
                  "returnParameters": {
                    "id": 415,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6219:0:0"
                  },
                  "scope": 1208,
                  "src": "6170:93:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 446,
                    "nodeType": "Block",
                    "src": "6347:117:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 429,
                              "name": "calldataMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 187,
                              "src": "6351:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_enum$_MockType_$159_$",
                                "typeString": "mapping(bytes memory => enum MockContract.MockType)"
                              }
                            },
                            "id": 431,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 430,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 424,
                              "src": "6369:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6351:23:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 432,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 159,
                              "src": "6377:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 433,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Return",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6377:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "6351:41:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$159",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 435,
                        "nodeType": "ExpressionStatement",
                        "src": "6351:41:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 436,
                              "name": "calldataExpectations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 191,
                              "src": "6396:20:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bytes_storage_$",
                                "typeString": "mapping(bytes memory => bytes storage ref)"
                              }
                            },
                            "id": 438,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 437,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 424,
                              "src": "6417:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6396:26:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 439,
                            "name": "response",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 426,
                            "src": "6425:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "6396:37:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 441,
                        "nodeType": "ExpressionStatement",
                        "src": "6396:37:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 443,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 424,
                              "src": "6455:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 442,
                            "name": "trackCalldataMock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 280,
                            "src": "6437:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory)"
                            }
                          },
                          "id": 444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6437:23:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 445,
                        "nodeType": "ExpressionStatement",
                        "src": "6437:23:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 447,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_givenCalldataReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 427,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 424,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 447,
                        "src": "6296:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 423,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6296:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 426,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 447,
                        "src": "6315:21:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 425,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6315:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6295:42:0"
                  },
                  "returnParameters": {
                    "id": 428,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6347:0:0"
                  },
                  "scope": 1208,
                  "src": "6266:198:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "baseFunctions": [
                    87
                  ],
                  "body": {
                    "id": 460,
                    "nodeType": "Block",
                    "src": "6561:44:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 456,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 449,
                              "src": "6586:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 457,
                              "name": "response",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 451,
                              "src": "6592:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 455,
                            "name": "_givenCalldataReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 447,
                            "src": "6565:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory,bytes memory)"
                            }
                          },
                          "id": 458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6565:36:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 459,
                        "nodeType": "ExpressionStatement",
                        "src": "6565:36:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "61936594",
                  "id": 461,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 453,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6542:8:0"
                  },
                  "parameters": {
                    "id": 452,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 449,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 461,
                        "src": "6496:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 448,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6496:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 451,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 461,
                        "src": "6517:23:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 450,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6517:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6495:46:0"
                  },
                  "returnParameters": {
                    "id": 454,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6561:0:0"
                  },
                  "scope": 1208,
                  "src": "6467:138:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    94
                  ],
                  "body": {
                    "id": 483,
                    "nodeType": "Block",
                    "src": "6695:85:0",
                    "statements": [
                      {
                        "assignments": [
                          470
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 470,
                            "mutability": "mutable",
                            "name": "flag",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 483,
                            "src": "6699:9:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 469,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "6699:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 475,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "id": 471,
                            "name": "response",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 465,
                            "src": "6711:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 473,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6726:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "id": 474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "6711:16:0",
                          "trueExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 472,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6722:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6699:28:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 477,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 463,
                              "src": "6752:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 479,
                                  "name": "flag",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 470,
                                  "src": "6770:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 478,
                                "name": "uintToBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1025,
                                "src": "6758:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                }
                              },
                              "id": 480,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6758:17:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 476,
                            "name": "_givenCalldataReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 447,
                            "src": "6731:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory,bytes memory)"
                            }
                          },
                          "id": 481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6731:45:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 482,
                        "nodeType": "ExpressionStatement",
                        "src": "6731:45:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "5a3855ab",
                  "id": 484,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataReturnBool",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 467,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6677:8:0"
                  },
                  "parameters": {
                    "id": 466,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 463,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 484,
                        "src": "6641:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 462,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6641:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 465,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 484,
                        "src": "6662:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 464,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6662:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6640:36:0"
                  },
                  "returnParameters": {
                    "id": 468,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6695:0:0"
                  },
                  "scope": 1208,
                  "src": "6608:172:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    101
                  ],
                  "body": {
                    "id": 499,
                    "nodeType": "Block",
                    "src": "6870:57:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 493,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 486,
                              "src": "6895:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 495,
                                  "name": "response",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 488,
                                  "src": "6913:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 494,
                                "name": "uintToBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1025,
                                "src": "6901:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                }
                              },
                              "id": 496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6901:21:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 492,
                            "name": "_givenCalldataReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 447,
                            "src": "6874:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory,bytes memory)"
                            }
                          },
                          "id": 497,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6874:49:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 498,
                        "nodeType": "ExpressionStatement",
                        "src": "6874:49:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d73ca0ac",
                  "id": 500,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataReturnUint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 490,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6852:8:0"
                  },
                  "parameters": {
                    "id": 489,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 486,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 500,
                        "src": "6816:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 485,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6816:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 488,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 500,
                        "src": "6837:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 487,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "6837:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6815:36:0"
                  },
                  "returnParameters": {
                    "id": 491,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6870:0:0"
                  },
                  "scope": 1208,
                  "src": "6783:144:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    108
                  ],
                  "body": {
                    "id": 518,
                    "nodeType": "Block",
                    "src": "7023:63:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 509,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 502,
                              "src": "7048:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 513,
                                      "name": "response",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 504,
                                      "src": "7071:8:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 512,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "7066:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 511,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7066:4:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 514,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7066:14:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 510,
                                "name": "uintToBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1025,
                                "src": "7054:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                }
                              },
                              "id": 515,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7054:27:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 508,
                            "name": "_givenCalldataReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 447,
                            "src": "7027:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory,bytes memory)"
                            }
                          },
                          "id": 516,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7027:55:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 517,
                        "nodeType": "ExpressionStatement",
                        "src": "7027:55:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "b3901f29",
                  "id": 519,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataReturnAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 506,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7005:8:0"
                  },
                  "parameters": {
                    "id": 505,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 502,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 519,
                        "src": "6966:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 501,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6966:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 504,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 519,
                        "src": "6987:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 503,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6987:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "6965:39:0"
                  },
                  "returnParameters": {
                    "id": 507,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7023:0:0"
                  },
                  "scope": 1208,
                  "src": "6930:156:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 549,
                    "nodeType": "Block",
                    "src": "7167:164:0",
                    "statements": [
                      {
                        "assignments": [
                          527
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 527,
                            "mutability": "mutable",
                            "name": "method",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 549,
                            "src": "7171:13:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 526,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "7171:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 531,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 529,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 521,
                              "src": "7201:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 528,
                            "name": "bytesToBytes4",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1009,
                            "src": "7187:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (bytes memory) pure returns (bytes4)"
                            }
                          },
                          "id": 530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7187:19:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7171:35:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 532,
                              "name": "methodIdMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 207,
                              "src": "7210:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_enum$_MockType_$159_$",
                                "typeString": "mapping(bytes4 => enum MockContract.MockType)"
                              }
                            },
                            "id": 534,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 533,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 527,
                              "src": "7228:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7210:25:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 535,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 159,
                              "src": "7238:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 536,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Return",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7238:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "7210:43:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$159",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 538,
                        "nodeType": "ExpressionStatement",
                        "src": "7210:43:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 539,
                              "name": "methodIdExpectations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 211,
                              "src": "7257:20:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                                "typeString": "mapping(bytes4 => bytes storage ref)"
                              }
                            },
                            "id": 541,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 540,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 527,
                              "src": "7278:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7257:28:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 542,
                            "name": "response",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 523,
                            "src": "7288:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "7257:39:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 544,
                        "nodeType": "ExpressionStatement",
                        "src": "7257:39:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 546,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 527,
                              "src": "7318:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "id": 545,
                            "name": "trackMethodIdMock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 307,
                            "src": "7300:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$",
                              "typeString": "function (bytes4)"
                            }
                          },
                          "id": 547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7300:25:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 548,
                        "nodeType": "ExpressionStatement",
                        "src": "7300:25:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 550,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_givenMethodReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 524,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 521,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 550,
                        "src": "7117:17:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 520,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7117:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 523,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 550,
                        "src": "7136:21:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 522,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7136:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7116:42:0"
                  },
                  "returnParameters": {
                    "id": 525,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7167:0:0"
                  },
                  "scope": 1208,
                  "src": "7089:242:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "baseFunctions": [
                    41
                  ],
                  "body": {
                    "id": 563,
                    "nodeType": "Block",
                    "src": "7425:42:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 559,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 552,
                              "src": "7448:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 560,
                              "name": "response",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 554,
                              "src": "7454:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 558,
                            "name": "_givenMethodReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 550,
                            "src": "7429:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory,bytes memory)"
                            }
                          },
                          "id": 561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7429:34:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 562,
                        "nodeType": "ExpressionStatement",
                        "src": "7429:34:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "c6ee167f",
                  "id": 564,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodReturn",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 556,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7407:8:0"
                  },
                  "parameters": {
                    "id": 555,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 552,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 564,
                        "src": "7361:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 551,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7361:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 554,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 564,
                        "src": "7382:23:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 553,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7382:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7360:46:0"
                  },
                  "returnParameters": {
                    "id": 557,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7425:0:0"
                  },
                  "scope": 1208,
                  "src": "7334:133:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    48
                  ],
                  "body": {
                    "id": 586,
                    "nodeType": "Block",
                    "src": "7555:83:0",
                    "statements": [
                      {
                        "assignments": [
                          573
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 573,
                            "mutability": "mutable",
                            "name": "flag",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 586,
                            "src": "7559:9:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 572,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "7559:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 578,
                        "initialValue": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "id": 574,
                            "name": "response",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 568,
                            "src": "7571:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 576,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7586:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "id": 577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "7571:16:0",
                          "trueExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 575,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7582:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7559:28:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 580,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 566,
                              "src": "7610:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 582,
                                  "name": "flag",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 573,
                                  "src": "7628:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 581,
                                "name": "uintToBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1025,
                                "src": "7616:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                }
                              },
                              "id": 583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7616:17:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 579,
                            "name": "_givenMethodReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 550,
                            "src": "7591:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory,bytes memory)"
                            }
                          },
                          "id": 584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7591:43:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 585,
                        "nodeType": "ExpressionStatement",
                        "src": "7591:43:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "6f400756",
                  "id": 587,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodReturnBool",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 570,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7537:8:0"
                  },
                  "parameters": {
                    "id": 569,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 566,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 587,
                        "src": "7501:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 565,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7501:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 568,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 587,
                        "src": "7522:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 567,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7522:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7500:36:0"
                  },
                  "returnParameters": {
                    "id": 571,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7555:0:0"
                  },
                  "scope": 1208,
                  "src": "7470:168:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    55
                  ],
                  "body": {
                    "id": 602,
                    "nodeType": "Block",
                    "src": "7726:55:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 596,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 589,
                              "src": "7749:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 598,
                                  "name": "response",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 591,
                                  "src": "7767:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 597,
                                "name": "uintToBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1025,
                                "src": "7755:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                }
                              },
                              "id": 599,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7755:21:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 595,
                            "name": "_givenMethodReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 550,
                            "src": "7730:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory,bytes memory)"
                            }
                          },
                          "id": 600,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7730:47:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 601,
                        "nodeType": "ExpressionStatement",
                        "src": "7730:47:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "f5afa9c1",
                  "id": 603,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodReturnUint",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 593,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7708:8:0"
                  },
                  "parameters": {
                    "id": 592,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 589,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 603,
                        "src": "7672:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 588,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7672:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 591,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 603,
                        "src": "7693:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 590,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7693:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7671:36:0"
                  },
                  "returnParameters": {
                    "id": 594,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7726:0:0"
                  },
                  "scope": 1208,
                  "src": "7641:140:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    62
                  ],
                  "body": {
                    "id": 621,
                    "nodeType": "Block",
                    "src": "7875:61:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 612,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 605,
                              "src": "7898:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 616,
                                      "name": "response",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 607,
                                      "src": "7921:8:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 615,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "7916:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 614,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7916:4:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 617,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7916:14:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 613,
                                "name": "uintToBytes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1025,
                                "src": "7904:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (bytes memory)"
                                }
                              },
                              "id": 618,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7904:27:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 611,
                            "name": "_givenMethodReturn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 550,
                            "src": "7879:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory,bytes memory)"
                            }
                          },
                          "id": 619,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7879:53:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 620,
                        "nodeType": "ExpressionStatement",
                        "src": "7879:53:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "cf11ff5d",
                  "id": 622,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodReturnAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 609,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7857:8:0"
                  },
                  "parameters": {
                    "id": 608,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 605,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 622,
                        "src": "7818:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 604,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7818:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 607,
                        "mutability": "mutable",
                        "name": "response",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 622,
                        "src": "7839:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 606,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7839:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7817:39:0"
                  },
                  "returnParameters": {
                    "id": 610,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7875:0:0"
                  },
                  "scope": 1208,
                  "src": "7784:152:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    113
                  ],
                  "body": {
                    "id": 645,
                    "nodeType": "Block",
                    "src": "8007:112:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 628,
                              "name": "calldataMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 187,
                              "src": "8011:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_enum$_MockType_$159_$",
                                "typeString": "mapping(bytes memory => enum MockContract.MockType)"
                              }
                            },
                            "id": 630,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 629,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 624,
                              "src": "8029:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8011:23:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 631,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 159,
                              "src": "8037:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 632,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Revert",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8037:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "8011:41:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$159",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 634,
                        "nodeType": "ExpressionStatement",
                        "src": "8011:41:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 635,
                              "name": "calldataRevertMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 195,
                              "src": "8056:21:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_string_storage_$",
                                "typeString": "mapping(bytes memory => string storage ref)"
                              }
                            },
                            "id": 637,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 636,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 624,
                              "src": "8078:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8056:27:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "",
                            "id": 638,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8086:2:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            },
                            "value": ""
                          },
                          "src": "8056:32:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 640,
                        "nodeType": "ExpressionStatement",
                        "src": "8056:32:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 642,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 624,
                              "src": "8110:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 641,
                            "name": "trackCalldataMock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 280,
                            "src": "8092:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory)"
                            }
                          },
                          "id": 643,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8092:23:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 644,
                        "nodeType": "ExpressionStatement",
                        "src": "8092:23:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "eb861f69",
                  "id": 646,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataRevert",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 626,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7989:8:0"
                  },
                  "parameters": {
                    "id": 625,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 624,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 646,
                        "src": "7968:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 623,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7968:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "7967:21:0"
                  },
                  "returnParameters": {
                    "id": 627,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8007:0:0"
                  },
                  "scope": 1208,
                  "src": "7939:180:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    67
                  ],
                  "body": {
                    "id": 669,
                    "nodeType": "Block",
                    "src": "8188:121:0",
                    "statements": [
                      {
                        "assignments": [
                          653
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 653,
                            "mutability": "mutable",
                            "name": "method",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 669,
                            "src": "8192:13:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 652,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "8192:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 657,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 655,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 648,
                              "src": "8222:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 654,
                            "name": "bytesToBytes4",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1009,
                            "src": "8208:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (bytes memory) pure returns (bytes4)"
                            }
                          },
                          "id": 656,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8208:19:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8192:35:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 658,
                              "name": "methodIdMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 207,
                              "src": "8231:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_enum$_MockType_$159_$",
                                "typeString": "mapping(bytes4 => enum MockContract.MockType)"
                              }
                            },
                            "id": 660,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 659,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 653,
                              "src": "8249:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8231:25:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 661,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 159,
                              "src": "8259:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 662,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Revert",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8259:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "8231:43:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$159",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 664,
                        "nodeType": "ExpressionStatement",
                        "src": "8231:43:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 666,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 653,
                              "src": "8296:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "id": 665,
                            "name": "trackMethodIdMock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 307,
                            "src": "8278:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$",
                              "typeString": "function (bytes4)"
                            }
                          },
                          "id": 667,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8278:25:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 668,
                        "nodeType": "ExpressionStatement",
                        "src": "8278:25:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "aa788c55",
                  "id": 670,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodRevert",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 650,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8170:8:0"
                  },
                  "parameters": {
                    "id": 649,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 648,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 670,
                        "src": "8149:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 647,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8149:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8148:21:0"
                  },
                  "returnParameters": {
                    "id": 651,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8188:0:0"
                  },
                  "scope": 1208,
                  "src": "8122:187:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    120
                  ],
                  "body": {
                    "id": 695,
                    "nodeType": "Block",
                    "src": "8416:117:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 683,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 678,
                              "name": "calldataMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 187,
                              "src": "8420:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_enum$_MockType_$159_$",
                                "typeString": "mapping(bytes memory => enum MockContract.MockType)"
                              }
                            },
                            "id": 680,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 679,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 672,
                              "src": "8438:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8420:23:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 681,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 159,
                              "src": "8446:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 682,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Revert",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8446:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "8420:41:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$159",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 684,
                        "nodeType": "ExpressionStatement",
                        "src": "8420:41:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 685,
                              "name": "calldataRevertMessage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 195,
                              "src": "8465:21:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_string_storage_$",
                                "typeString": "mapping(bytes memory => string storage ref)"
                              }
                            },
                            "id": 687,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 686,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 672,
                              "src": "8487:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8465:27:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 688,
                            "name": "message",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 674,
                            "src": "8495:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "8465:37:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 690,
                        "nodeType": "ExpressionStatement",
                        "src": "8465:37:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 692,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 672,
                              "src": "8524:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 691,
                            "name": "trackCalldataMock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 280,
                            "src": "8506:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory)"
                            }
                          },
                          "id": 693,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8506:23:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 694,
                        "nodeType": "ExpressionStatement",
                        "src": "8506:23:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "9eaeed75",
                  "id": 696,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataRevertWithMessage",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 676,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8398:8:0"
                  },
                  "parameters": {
                    "id": 675,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 672,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 696,
                        "src": "8352:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 671,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8352:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 674,
                        "mutability": "mutable",
                        "name": "message",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 696,
                        "src": "8373:23:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 673,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "8373:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8351:46:0"
                  },
                  "returnParameters": {
                    "id": 677,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8416:0:0"
                  },
                  "scope": 1208,
                  "src": "8312:221:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    74
                  ],
                  "body": {
                    "id": 727,
                    "nodeType": "Block",
                    "src": "8638:165:0",
                    "statements": [
                      {
                        "assignments": [
                          705
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 705,
                            "mutability": "mutable",
                            "name": "method",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 727,
                            "src": "8642:13:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 704,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "8642:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 709,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 707,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 698,
                              "src": "8672:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 706,
                            "name": "bytesToBytes4",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1009,
                            "src": "8658:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (bytes memory) pure returns (bytes4)"
                            }
                          },
                          "id": 708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8658:19:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8642:35:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 715,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 710,
                              "name": "methodIdMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 207,
                              "src": "8681:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_enum$_MockType_$159_$",
                                "typeString": "mapping(bytes4 => enum MockContract.MockType)"
                              }
                            },
                            "id": 712,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 711,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 705,
                              "src": "8699:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8681:25:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 713,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 159,
                              "src": "8709:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 714,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Revert",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8709:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "8681:43:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$159",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 716,
                        "nodeType": "ExpressionStatement",
                        "src": "8681:43:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 717,
                              "name": "methodIdRevertMessages",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 215,
                              "src": "8728:22:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_string_storage_$",
                                "typeString": "mapping(bytes4 => string storage ref)"
                              }
                            },
                            "id": 719,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 718,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 705,
                              "src": "8751:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8728:30:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 720,
                            "name": "message",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 700,
                            "src": "8761:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_calldata_ptr",
                              "typeString": "string calldata"
                            }
                          },
                          "src": "8728:40:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 722,
                        "nodeType": "ExpressionStatement",
                        "src": "8728:40:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 724,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 705,
                              "src": "8790:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "id": 723,
                            "name": "trackMethodIdMock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 307,
                            "src": "8772:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$",
                              "typeString": "function (bytes4)"
                            }
                          },
                          "id": 725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8772:25:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 726,
                        "nodeType": "ExpressionStatement",
                        "src": "8772:25:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "9a1dc86b",
                  "id": 728,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodRevertWithMessage",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 702,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8620:8:0"
                  },
                  "parameters": {
                    "id": 701,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 698,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 728,
                        "src": "8574:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 697,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8574:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 700,
                        "mutability": "mutable",
                        "name": "message",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 728,
                        "src": "8595:23:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 699,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "8595:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8573:46:0"
                  },
                  "returnParameters": {
                    "id": 703,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8638:0:0"
                  },
                  "scope": 1208,
                  "src": "8536:267:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    125
                  ],
                  "body": {
                    "id": 745,
                    "nodeType": "Block",
                    "src": "8879:78:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 734,
                              "name": "calldataMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 187,
                              "src": "8883:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_enum$_MockType_$159_$",
                                "typeString": "mapping(bytes memory => enum MockContract.MockType)"
                              }
                            },
                            "id": 736,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 735,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 730,
                              "src": "8901:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8883:23:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 737,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 159,
                              "src": "8909:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 738,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "OutOfGas",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8909:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "8883:43:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$159",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 740,
                        "nodeType": "ExpressionStatement",
                        "src": "8883:43:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 742,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 730,
                              "src": "8948:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 741,
                            "name": "trackCalldataMock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 280,
                            "src": "8930:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory)"
                            }
                          },
                          "id": 743,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8930:23:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 744,
                        "nodeType": "ExpressionStatement",
                        "src": "8930:23:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "21fed4d6",
                  "id": 746,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenCalldataRunOutOfGas",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 732,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8861:8:0"
                  },
                  "parameters": {
                    "id": 731,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 730,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 746,
                        "src": "8840:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 729,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8840:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8839:21:0"
                  },
                  "returnParameters": {
                    "id": 733,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8879:0:0"
                  },
                  "scope": 1208,
                  "src": "8806:151:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    79
                  ],
                  "body": {
                    "id": 769,
                    "nodeType": "Block",
                    "src": "9031:122:0",
                    "statements": [
                      {
                        "assignments": [
                          753
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 753,
                            "mutability": "mutable",
                            "name": "method",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 769,
                            "src": "9035:13:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 752,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "9035:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 757,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 755,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 748,
                              "src": "9065:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 754,
                            "name": "bytesToBytes4",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1009,
                            "src": "9051:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (bytes memory) pure returns (bytes4)"
                            }
                          },
                          "id": 756,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9051:19:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9035:35:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 758,
                              "name": "methodIdMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 207,
                              "src": "9074:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_enum$_MockType_$159_$",
                                "typeString": "mapping(bytes4 => enum MockContract.MockType)"
                              }
                            },
                            "id": 760,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 759,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 753,
                              "src": "9092:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9074:25:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 761,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 159,
                              "src": "9102:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 762,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "OutOfGas",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9102:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "9074:45:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$159",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 764,
                        "nodeType": "ExpressionStatement",
                        "src": "9074:45:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 766,
                              "name": "method",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 753,
                              "src": "9141:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "id": 765,
                            "name": "trackMethodIdMock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 307,
                            "src": "9123:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$",
                              "typeString": "function (bytes4)"
                            }
                          },
                          "id": 767,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9123:25:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 768,
                        "nodeType": "ExpressionStatement",
                        "src": "9123:25:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "68ab6f2f",
                  "id": 770,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "givenMethodRunOutOfGas",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 750,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9013:8:0"
                  },
                  "parameters": {
                    "id": 749,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 748,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 770,
                        "src": "8992:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 747,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8992:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "8991:21:0"
                  },
                  "returnParameters": {
                    "id": 751,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9031:0:0"
                  },
                  "scope": 1208,
                  "src": "8960:193:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    131
                  ],
                  "body": {
                    "id": 778,
                    "nodeType": "Block",
                    "src": "9216:26:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 776,
                          "name": "invocations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 228,
                          "src": "9227:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 775,
                        "id": 777,
                        "nodeType": "Return",
                        "src": "9220:18:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "0a20119f",
                  "id": 779,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "invocationCount",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 772,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9183:8:0"
                  },
                  "parameters": {
                    "id": 771,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9180:2:0"
                  },
                  "returnParameters": {
                    "id": 775,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 774,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 779,
                        "src": "9210:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 773,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9210:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9209:6:0"
                  },
                  "scope": 1208,
                  "src": "9156:86:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    139
                  ],
                  "body": {
                    "id": 803,
                    "nodeType": "Block",
                    "src": "9333:122:0",
                    "statements": [
                      {
                        "assignments": [
                          788
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 788,
                            "mutability": "mutable",
                            "name": "method",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 803,
                            "src": "9337:13:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 787,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "9337:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 792,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 790,
                              "name": "call",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 781,
                              "src": "9367:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 789,
                            "name": "bytesToBytes4",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1009,
                            "src": "9353:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (bytes memory) pure returns (bytes4)"
                            }
                          },
                          "id": 791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9353:19:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9337:35:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 793,
                            "name": "methodIdInvocations",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 219,
                            "src": "9383:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 801,
                          "indexExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 797,
                                    "name": "resetCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 230,
                                    "src": "9430:10:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 798,
                                    "name": "method",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 788,
                                    "src": "9442:6:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 795,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "9413:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 796,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9413:16:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 799,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9413:36:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 794,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "9403:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 800,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9403:47:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9383:68:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 786,
                        "id": 802,
                        "nodeType": "Return",
                        "src": "9376:75:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "4937c4f6",
                  "id": 804,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "invocationCountForMethod",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 783,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9300:8:0"
                  },
                  "parameters": {
                    "id": 782,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 781,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 804,
                        "src": "9279:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 780,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9279:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9278:21:0"
                  },
                  "returnParameters": {
                    "id": 786,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 785,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 804,
                        "src": "9327:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 784,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9327:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9326:6:0"
                  },
                  "scope": 1208,
                  "src": "9245:210:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    147
                  ],
                  "body": {
                    "id": 822,
                    "nodeType": "Block",
                    "src": "9548:81:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 812,
                            "name": "calldataInvocations",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 199,
                            "src": "9559:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 820,
                          "indexExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 816,
                                    "name": "resetCount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 230,
                                    "src": "9606:10:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 817,
                                    "name": "call",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 806,
                                    "src": "9618:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 814,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "9589:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 815,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9589:16:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 818,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9589:34:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 813,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "9579:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 819,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9579:45:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9559:66:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 811,
                        "id": 821,
                        "nodeType": "Return",
                        "src": "9552:73:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "586984a4",
                  "id": 823,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "invocationCountForCalldata",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 808,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9515:8:0"
                  },
                  "parameters": {
                    "id": 807,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 806,
                        "mutability": "mutable",
                        "name": "call",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 823,
                        "src": "9494:19:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 805,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9494:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9493:21:0"
                  },
                  "returnParameters": {
                    "id": 811,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 810,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 823,
                        "src": "9542:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 809,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9542:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "9541:6:0"
                  },
                  "scope": 1208,
                  "src": "9458:171:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    151
                  ],
                  "body": {
                    "id": 956,
                    "nodeType": "Block",
                    "src": "9667:1285:0",
                    "statements": [
                      {
                        "assignments": [
                          828
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 828,
                            "mutability": "mutable",
                            "name": "nextMock",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 956,
                            "src": "9706:21:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 827,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "9706:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 832,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 829,
                            "name": "calldataMocks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 183,
                            "src": "9730:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                              "typeString": "mapping(bytes32 => bytes storage ref)"
                            }
                          },
                          "id": 831,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 830,
                            "name": "MOCKS_LIST_START",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 162,
                            "src": "9744:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9730:31:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9706:55:0"
                      },
                      {
                        "assignments": [
                          834
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 834,
                            "mutability": "mutable",
                            "name": "mockHash",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 956,
                            "src": "9765:16:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 833,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9765:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 838,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 836,
                              "name": "nextMock",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 828,
                              "src": "9794:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 835,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "9784:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9784:19:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9765:38:0"
                      },
                      {
                        "body": {
                          "id": 879,
                          "nodeType": "Block",
                          "src": "9875:355:0",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 847,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 842,
                                    "name": "calldataMockTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 187,
                                    "src": "9906:17:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_enum$_MockType_$159_$",
                                      "typeString": "mapping(bytes memory => enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 844,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 843,
                                    "name": "nextMock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 828,
                                    "src": "9924:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "9906:27:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$159",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 845,
                                    "name": "MockType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 159,
                                    "src": "9936:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                      "typeString": "type(enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 846,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Return",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9936:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$159",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "src": "9906:45:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_MockType_$159",
                                  "typeString": "enum MockContract.MockType"
                                }
                              },
                              "id": 848,
                              "nodeType": "ExpressionStatement",
                              "src": "9906:45:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 853,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 849,
                                    "name": "calldataExpectations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 191,
                                    "src": "9956:20:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bytes_storage_$",
                                      "typeString": "mapping(bytes memory => bytes storage ref)"
                                    }
                                  },
                                  "id": 851,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 850,
                                    "name": "nextMock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 828,
                                    "src": "9977:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "9956:30:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "",
                                  "id": 852,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9989:5:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                    "typeString": "literal_string \"\""
                                  },
                                  "value": ""
                                },
                                "src": "9956:38:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 854,
                              "nodeType": "ExpressionStatement",
                              "src": "9956:38:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 859,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 855,
                                    "name": "calldataRevertMessage",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 195,
                                    "src": "9999:21:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_string_storage_$",
                                      "typeString": "mapping(bytes memory => string storage ref)"
                                    }
                                  },
                                  "id": 857,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 856,
                                    "name": "nextMock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 828,
                                    "src": "10021:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "9999:31:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "",
                                  "id": 858,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10033:2:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                    "typeString": "literal_string \"\""
                                  },
                                  "value": ""
                                },
                                "src": "9999:36:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              },
                              "id": 860,
                              "nodeType": "ExpressionStatement",
                              "src": "9999:36:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 865,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 861,
                                  "name": "nextMock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 828,
                                  "src": "10070:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 862,
                                    "name": "calldataMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 183,
                                    "src": "10081:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                      "typeString": "mapping(bytes32 => bytes storage ref)"
                                    }
                                  },
                                  "id": 864,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 863,
                                    "name": "mockHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 834,
                                    "src": "10095:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10081:23:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "src": "10070:34:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 866,
                              "nodeType": "ExpressionStatement",
                              "src": "10070:34:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 871,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 867,
                                    "name": "calldataMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 183,
                                    "src": "10139:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                      "typeString": "mapping(bytes32 => bytes storage ref)"
                                    }
                                  },
                                  "id": 869,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 868,
                                    "name": "mockHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 834,
                                    "src": "10153:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10139:23:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "",
                                  "id": 870,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10165:2:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                    "typeString": "literal_string \"\""
                                  },
                                  "value": ""
                                },
                                "src": "10139:28:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 872,
                              "nodeType": "ExpressionStatement",
                              "src": "10139:28:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 873,
                                  "name": "mockHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 834,
                                  "src": "10195:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 875,
                                      "name": "nextMock",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 828,
                                      "src": "10216:8:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 874,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "10206:9:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 876,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10206:19:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "10195:30:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 878,
                              "nodeType": "ExpressionStatement",
                              "src": "10195:30:0"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 841,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 839,
                            "name": "mockHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 834,
                            "src": "9842:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 840,
                            "name": "MOCKS_LIST_END_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 170,
                            "src": "9854:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "9842:31:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 880,
                        "nodeType": "WhileStatement",
                        "src": "9836:394:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 881,
                              "name": "calldataMocks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 183,
                              "src": "10249:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes_storage_$",
                                "typeString": "mapping(bytes32 => bytes storage ref)"
                              }
                            },
                            "id": 883,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 882,
                              "name": "MOCKS_LIST_START",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 162,
                              "src": "10263:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10249:31:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 884,
                            "name": "MOCKS_LIST_END",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 165,
                            "src": "10283:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "10249:48:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 886,
                        "nodeType": "ExpressionStatement",
                        "src": "10249:48:0"
                      },
                      {
                        "assignments": [
                          888
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 888,
                            "mutability": "mutable",
                            "name": "nextAnyMock",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 956,
                            "src": "10335:18:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 887,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "10335:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 892,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 889,
                            "name": "methodIdMocks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 203,
                            "src": "10356:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                              "typeString": "mapping(bytes4 => bytes4)"
                            }
                          },
                          "id": 891,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 890,
                            "name": "SENTINEL_ANY_MOCKS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 173,
                            "src": "10370:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10356:33:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10335:54:0"
                      },
                      {
                        "body": {
                          "id": 931,
                          "nodeType": "Block",
                          "src": "10434:316:0",
                          "statements": [
                            {
                              "assignments": [
                                897
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 897,
                                  "mutability": "mutable",
                                  "name": "currentAnyMock",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 931,
                                  "src": "10439:21:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 896,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10439:6:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 899,
                              "initialValue": {
                                "argumentTypes": null,
                                "id": 898,
                                "name": "nextAnyMock",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 888,
                                "src": "10463:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10439:35:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 905,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 900,
                                    "name": "methodIdMockTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 207,
                                    "src": "10479:17:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_enum$_MockType_$159_$",
                                      "typeString": "mapping(bytes4 => enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 902,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 901,
                                    "name": "currentAnyMock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 897,
                                    "src": "10497:14:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10479:33:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$159",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 903,
                                    "name": "MockType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 159,
                                    "src": "10515:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                      "typeString": "type(enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 904,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Return",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "10515:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$159",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "src": "10479:51:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_MockType_$159",
                                  "typeString": "enum MockContract.MockType"
                                }
                              },
                              "id": 906,
                              "nodeType": "ExpressionStatement",
                              "src": "10479:51:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 911,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 907,
                                    "name": "methodIdExpectations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 211,
                                    "src": "10535:20:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                                      "typeString": "mapping(bytes4 => bytes storage ref)"
                                    }
                                  },
                                  "id": 909,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 908,
                                    "name": "currentAnyMock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 897,
                                    "src": "10556:14:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10535:36:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "",
                                  "id": 910,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10574:5:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                    "typeString": "literal_string \"\""
                                  },
                                  "value": ""
                                },
                                "src": "10535:44:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 912,
                              "nodeType": "ExpressionStatement",
                              "src": "10535:44:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 917,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 913,
                                    "name": "methodIdRevertMessages",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 215,
                                    "src": "10584:22:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_string_storage_$",
                                      "typeString": "mapping(bytes4 => string storage ref)"
                                    }
                                  },
                                  "id": 915,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 914,
                                    "name": "currentAnyMock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 897,
                                    "src": "10607:14:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10584:38:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "",
                                  "id": 916,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10625:2:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                    "typeString": "literal_string \"\""
                                  },
                                  "value": ""
                                },
                                "src": "10584:43:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              },
                              "id": 918,
                              "nodeType": "ExpressionStatement",
                              "src": "10584:43:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 923,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 919,
                                  "name": "nextAnyMock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 888,
                                  "src": "10632:11:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 920,
                                    "name": "methodIdMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 203,
                                    "src": "10646:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                                      "typeString": "mapping(bytes4 => bytes4)"
                                    }
                                  },
                                  "id": 922,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 921,
                                    "name": "currentAnyMock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 897,
                                    "src": "10660:14:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10646:29:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "10632:43:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 924,
                              "nodeType": "ExpressionStatement",
                              "src": "10632:43:0"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 929,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 925,
                                    "name": "methodIdMocks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 203,
                                    "src": "10710:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                                      "typeString": "mapping(bytes4 => bytes4)"
                                    }
                                  },
                                  "id": 927,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 926,
                                    "name": "currentAnyMock",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 897,
                                    "src": "10724:14:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10710:29:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "307830",
                                  "id": 928,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10742:3:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0x0"
                                },
                                "src": "10710:35:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 930,
                              "nodeType": "ExpressionStatement",
                              "src": "10710:35:0"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 893,
                            "name": "nextAnyMock",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 888,
                            "src": "10399:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 894,
                            "name": "SENTINEL_ANY_MOCKS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 173,
                            "src": "10414:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "10399:33:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 932,
                        "nodeType": "WhileStatement",
                        "src": "10393:357:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 933,
                              "name": "methodIdMocks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 203,
                              "src": "10769:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes4_$",
                                "typeString": "mapping(bytes4 => bytes4)"
                              }
                            },
                            "id": 935,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 934,
                              "name": "SENTINEL_ANY_MOCKS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 173,
                              "src": "10783:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10769:33:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 936,
                            "name": "SENTINEL_ANY_MOCKS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 173,
                            "src": "10805:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "10769:54:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 938,
                        "nodeType": "ExpressionStatement",
                        "src": "10769:54:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 939,
                            "name": "fallbackExpectation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 224,
                            "src": "10828:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 940,
                            "name": "DEFAULT_FALLBACK_VALUE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 179,
                            "src": "10850:22:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "10828:44:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 942,
                        "nodeType": "ExpressionStatement",
                        "src": "10828:44:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 946,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 943,
                            "name": "fallbackMockType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 221,
                            "src": "10876:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 944,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 159,
                              "src": "10895:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 945,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Return",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10895:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "10876:34:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_MockType_$159",
                            "typeString": "enum MockContract.MockType"
                          }
                        },
                        "id": 947,
                        "nodeType": "ExpressionStatement",
                        "src": "10876:34:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 948,
                            "name": "invocations",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 228,
                            "src": "10914:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10928:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10914:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 951,
                        "nodeType": "ExpressionStatement",
                        "src": "10914:15:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 954,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 952,
                            "name": "resetCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 230,
                            "src": "10933:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 953,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10947:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "10933:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 955,
                        "nodeType": "ExpressionStatement",
                        "src": "10933:15:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "d826f88f",
                  "id": 957,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "reset",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 825,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9649:8:0"
                  },
                  "parameters": {
                    "id": 824,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9646:2:0"
                  },
                  "returnParameters": {
                    "id": 826,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9667:0:0"
                  },
                  "scope": 1208,
                  "src": "9632:1320:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 967,
                    "nodeType": "Block",
                    "src": "10984:159:0",
                    "statements": [
                      {
                        "body": {
                          "id": 965,
                          "nodeType": "Block",
                          "src": "11000:140:0",
                          "statements": [
                            {
                              "assignments": [
                                962
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 962,
                                  "mutability": "mutable",
                                  "name": "s",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 965,
                                  "src": "11005:6:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 961,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11005:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 963,
                              "initialValue": null,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11005:6:0"
                            },
                            {
                              "AST": {
                                "nodeType": "YulBlock",
                                "src": "11025:111:0",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11076:55:0",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [],
                                              "functionName": {
                                                "name": "gas",
                                                "nodeType": "YulIdentifier",
                                                "src": "11090:3:0"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "11090:5:0"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "11097:4:0",
                                              "type": "",
                                              "value": "2000"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "11086:3:0"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "11086:16:0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11104:1:0",
                                          "type": "",
                                          "value": "6"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11107:1:0",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11110:3:0",
                                          "type": "",
                                          "value": "0x0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11115:4:0",
                                          "type": "",
                                          "value": "0xc0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11121:3:0",
                                          "type": "",
                                          "value": "0x0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11126:4:0",
                                          "type": "",
                                          "value": "0x60"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "call",
                                        "nodeType": "YulIdentifier",
                                        "src": "11081:4:0"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11081:50:0"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "s",
                                        "nodeType": "YulIdentifier",
                                        "src": "11076:1:0"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "evmVersion": "istanbul",
                              "externalReferences": [
                                {
                                  "declaration": 962,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "11076:1:0",
                                  "valueSize": 1
                                }
                              ],
                              "id": 964,
                              "nodeType": "InlineAssembly",
                              "src": "11016:120:0"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10994:4:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "id": 966,
                        "nodeType": "WhileStatement",
                        "src": "10988:152:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 968,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "useAllGas",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 958,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10973:2:0"
                  },
                  "returnParameters": {
                    "id": 959,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10984:0:0"
                  },
                  "scope": 1208,
                  "src": "10955:188:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1008,
                    "nodeType": "Block",
                    "src": "11215:111:0",
                    "statements": [
                      {
                        "assignments": [
                          976
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 976,
                            "mutability": "mutable",
                            "name": "out",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1008,
                            "src": "11219:10:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 975,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "11219:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 977,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11219:10:0"
                      },
                      {
                        "body": {
                          "id": 1004,
                          "nodeType": "Block",
                          "src": "11262:47:0",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1002,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 988,
                                  "name": "out",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 976,
                                  "src": "11267:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "|=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "id": 1001,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        },
                                        "id": 995,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 991,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 970,
                                            "src": "11281:1:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          },
                                          "id": 993,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 992,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 979,
                                            "src": "11283:1:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "11281:4:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes1",
                                            "typeString": "bytes1"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "30784646",
                                          "id": 994,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "11288:4:0",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_255_by_1",
                                            "typeString": "int_const 255"
                                          },
                                          "value": "0xFF"
                                        },
                                        "src": "11281:11:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      ],
                                      "id": 990,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "11274:6:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes4_$",
                                        "typeString": "type(bytes4)"
                                      },
                                      "typeName": {
                                        "id": 989,
                                        "name": "bytes4",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11274:6:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 996,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11274:19:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 999,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 997,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 979,
                                          "src": "11298:1:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "38",
                                          "id": 998,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "11302:1:0",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_8_by_1",
                                            "typeString": "int_const 8"
                                          },
                                          "value": "8"
                                        },
                                        "src": "11298:5:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 1000,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "11297:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "11274:30:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "11267:37:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "id": 1003,
                              "nodeType": "ExpressionStatement",
                              "src": "11267:37:0"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 982,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 979,
                            "src": "11250:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "34",
                            "id": 983,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11254:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "src": "11250:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1005,
                        "initializationExpression": {
                          "assignments": [
                            979
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 979,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 1005,
                              "src": "11238:6:0",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 978,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "11238:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 981,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 980,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11247:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "11238:10:0"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 986,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "11257:3:0",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 985,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 979,
                              "src": "11257:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 987,
                          "nodeType": "ExpressionStatement",
                          "src": "11257:3:0"
                        },
                        "nodeType": "ForStatement",
                        "src": "11233:76:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1006,
                          "name": "out",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 976,
                          "src": "11319:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 974,
                        "id": 1007,
                        "nodeType": "Return",
                        "src": "11312:10:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 1009,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "bytesToBytes4",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 971,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 970,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1009,
                        "src": "11169:14:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 969,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "11169:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11168:16:0"
                  },
                  "returnParameters": {
                    "id": 974,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 973,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1009,
                        "src": "11207:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 972,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "11207:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11206:8:0"
                  },
                  "scope": 1208,
                  "src": "11146:180:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1024,
                    "nodeType": "Block",
                    "src": "11399:62:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1021,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1016,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1014,
                            "src": "11403:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 1019,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11417:2:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                }
                              ],
                              "id": 1018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "11407:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes memory)"
                              },
                              "typeName": {
                                "id": 1017,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "11411:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage_ptr",
                                  "typeString": "bytes"
                                }
                              }
                            },
                            "id": 1020,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11407:13:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "11403:17:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 1022,
                        "nodeType": "ExpressionStatement",
                        "src": "11403:17:0"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "11433:25:0",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "b",
                                        "nodeType": "YulIdentifier",
                                        "src": "11446:1:0"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11449:2:0",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11442:3:0"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11442:10:0"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "11454:1:0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11435:6:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11435:21:0"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11435:21:0"
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 1014,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11446:1:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 1011,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11454:1:0",
                            "valueSize": 1
                          }
                        ],
                        "id": 1023,
                        "nodeType": "InlineAssembly",
                        "src": "11424:34:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 1025,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uintToBytes",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1012,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1011,
                        "mutability": "mutable",
                        "name": "x",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1025,
                        "src": "11350:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1010,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11350:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11349:11:0"
                  },
                  "returnParameters": {
                    "id": 1015,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1014,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1025,
                        "src": "11383:14:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1013,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "11383:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11382:16:0"
                  },
                  "scope": 1208,
                  "src": "11329:132:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1071,
                    "nodeType": "Block",
                    "src": "11549:276:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "id": 1039,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1033,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "11561:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 1034,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11561:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1037,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "11583:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_MockContract_$1208",
                                      "typeString": "contract MockContract"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_MockContract_$1208",
                                      "typeString": "contract MockContract"
                                    }
                                  ],
                                  "id": 1036,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11575:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1035,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11575:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1038,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11575:13:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "11561:27:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "43616e206f6e6c792062652063616c6c65642066726f6d2074686520636f6e747261637420697473656c66",
                              "id": 1040,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11590:45:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8c2a7706aa95c4ff646dc7931f50c2cd85f9e54da282acbb69564a5e8efec9d9",
                                "typeString": "literal_string \"Can only be called from the contract itself\""
                              },
                              "value": "Can only be called from the contract itself"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8c2a7706aa95c4ff646dc7931f50c2cd85f9e54da282acbb69564a5e8efec9d9",
                                "typeString": "literal_string \"Can only be called from the contract itself\""
                              }
                            ],
                            "id": 1032,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11553:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11553:83:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1042,
                        "nodeType": "ExpressionStatement",
                        "src": "11553:83:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1043,
                            "name": "invocations",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 228,
                            "src": "11640:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11655:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "11640:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1046,
                        "nodeType": "ExpressionStatement",
                        "src": "11640:16:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1057,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1047,
                              "name": "methodIdInvocations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 219,
                              "src": "11660:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 1055,
                            "indexExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1051,
                                      "name": "resetCount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 230,
                                      "src": "11707:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1052,
                                      "name": "methodId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1027,
                                      "src": "11719:8:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1049,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "11690:3:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 1050,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11690:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 1053,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11690:38:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 1048,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "11680:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 1054,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11680:49:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11660:70:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1056,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11734:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "11660:75:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1058,
                        "nodeType": "ExpressionStatement",
                        "src": "11660:75:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1059,
                              "name": "calldataInvocations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 199,
                              "src": "11739:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 1067,
                            "indexExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1063,
                                      "name": "resetCount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 230,
                                      "src": "11786:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 1064,
                                      "name": "originalMsgData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1029,
                                      "src": "11798:15:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1061,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "11769:3:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 1062,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11769:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 1065,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11769:45:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 1060,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "11759:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 1066,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11759:56:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11739:77:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1068,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11820:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "11739:82:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1070,
                        "nodeType": "ExpressionStatement",
                        "src": "11739:82:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "functionSelector": "58cbc025",
                  "id": 1072,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updateInvocationCount",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1030,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1027,
                        "mutability": "mutable",
                        "name": "methodId",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1072,
                        "src": "11495:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1026,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "11495:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1029,
                        "mutability": "mutable",
                        "name": "originalMsgData",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1072,
                        "src": "11512:28:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1028,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "11512:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "11494:47:0"
                  },
                  "returnParameters": {
                    "id": 1031,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11549:0:0"
                  },
                  "scope": 1208,
                  "src": "11464:361:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1206,
                    "nodeType": "Block",
                    "src": "11857:1243:0",
                    "statements": [
                      {
                        "assignments": [
                          1076
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1076,
                            "mutability": "mutable",
                            "name": "methodId",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1206,
                            "src": "11861:15:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 1075,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "11861:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1077,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11861:15:0"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "11889:36:0",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11894:27:0",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11919:1:0",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11906:12:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11906:15:0"
                              },
                              "variableNames": [
                                {
                                  "name": "methodId",
                                  "nodeType": "YulIdentifier",
                                  "src": "11894:8:0"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 1076,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11894:8:0",
                            "valueSize": 1
                          }
                        ],
                        "id": 1078,
                        "nodeType": "InlineAssembly",
                        "src": "11880:45:0"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_MockType_$159",
                            "typeString": "enum MockContract.MockType"
                          },
                          "id": 1085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1079,
                              "name": "calldataMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 187,
                              "src": "11976:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_enum$_MockType_$159_$",
                                "typeString": "mapping(bytes memory => enum MockContract.MockType)"
                              }
                            },
                            "id": 1082,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1080,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "11994:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1081,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11994:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11976:27:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1083,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 159,
                              "src": "12007:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 1084,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Revert",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12007:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "11976:46:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1094,
                        "nodeType": "IfStatement",
                        "src": "11972:101:0",
                        "trueBody": {
                          "id": 1093,
                          "nodeType": "Block",
                          "src": "12024:49:0",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1087,
                                      "name": "calldataRevertMessage",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 195,
                                      "src": "12036:21:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_string_storage_$",
                                        "typeString": "mapping(bytes memory => string storage ref)"
                                      }
                                    },
                                    "id": 1090,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1088,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "12058:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 1089,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "data",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "12058:8:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "12036:31:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_storage",
                                      "typeString": "string storage ref"
                                    }
                                  ],
                                  "id": 1086,
                                  "name": "revert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -19,
                                    -19
                                  ],
                                  "referencedDeclaration": -19,
                                  "src": "12029:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (string memory) pure"
                                  }
                                },
                                "id": 1091,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12029:39:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1092,
                              "nodeType": "ExpressionStatement",
                              "src": "12029:39:0"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_MockType_$159",
                            "typeString": "enum MockContract.MockType"
                          },
                          "id": 1101,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1095,
                              "name": "calldataMockTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 187,
                              "src": "12080:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_enum$_MockType_$159_$",
                                "typeString": "mapping(bytes memory => enum MockContract.MockType)"
                              }
                            },
                            "id": 1098,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1096,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "12098:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1097,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12098:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12080:27:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1099,
                              "name": "MockType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 159,
                              "src": "12111:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                "typeString": "type(enum MockContract.MockType)"
                              }
                            },
                            "id": 1100,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "OutOfGas",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12111:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_MockType_$159",
                              "typeString": "enum MockContract.MockType"
                            }
                          },
                          "src": "12080:48:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1106,
                        "nodeType": "IfStatement",
                        "src": "12076:75:0",
                        "trueBody": {
                          "id": 1105,
                          "nodeType": "Block",
                          "src": "12130:21:0",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 1102,
                                  "name": "useAllGas",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 968,
                                  "src": "12135:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 1103,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12135:11:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1104,
                              "nodeType": "ExpressionStatement",
                              "src": "12135:11:0"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          1108
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1108,
                            "mutability": "mutable",
                            "name": "result",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1206,
                            "src": "12154:19:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 1107,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "12154:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1113,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1109,
                            "name": "calldataExpectations",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 191,
                            "src": "12176:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes_memory_ptr_$_t_bytes_storage_$",
                              "typeString": "mapping(bytes memory => bytes storage ref)"
                            }
                          },
                          "id": 1112,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1110,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "12197:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12197:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12176:30:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12154:52:0"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1117,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1114,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1108,
                              "src": "12251:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 1115,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12251:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1116,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12268:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12251:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1150,
                        "nodeType": "IfStatement",
                        "src": "12247:262:0",
                        "trueBody": {
                          "id": 1149,
                          "nodeType": "Block",
                          "src": "12271:238:0",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_MockType_$159",
                                  "typeString": "enum MockContract.MockType"
                                },
                                "id": 1123,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1118,
                                    "name": "methodIdMockTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 207,
                                    "src": "12280:17:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_enum$_MockType_$159_$",
                                      "typeString": "mapping(bytes4 => enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 1120,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1119,
                                    "name": "methodId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1076,
                                    "src": "12298:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12280:27:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$159",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1121,
                                    "name": "MockType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 159,
                                    "src": "12311:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                      "typeString": "type(enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 1122,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Revert",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12311:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$159",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "src": "12280:46:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1131,
                              "nodeType": "IfStatement",
                              "src": "12276:104:0",
                              "trueBody": {
                                "id": 1130,
                                "nodeType": "Block",
                                "src": "12328:52:0",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 1125,
                                            "name": "methodIdRevertMessages",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 215,
                                            "src": "12341:22:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_bytes4_$_t_string_storage_$",
                                              "typeString": "mapping(bytes4 => string storage ref)"
                                            }
                                          },
                                          "id": 1127,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 1126,
                                            "name": "methodId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1076,
                                            "src": "12364:8:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "12341:32:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage",
                                            "typeString": "string storage ref"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_storage",
                                            "typeString": "string storage ref"
                                          }
                                        ],
                                        "id": 1124,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -19,
                                          -19
                                        ],
                                        "referencedDeclaration": -19,
                                        "src": "12334:6:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 1128,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12334:40:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1129,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12334:40:0"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_MockType_$159",
                                  "typeString": "enum MockContract.MockType"
                                },
                                "id": 1137,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1132,
                                    "name": "methodIdMockTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 207,
                                    "src": "12388:17:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_enum$_MockType_$159_$",
                                      "typeString": "mapping(bytes4 => enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 1134,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1133,
                                    "name": "methodId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1076,
                                    "src": "12406:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12388:27:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$159",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1135,
                                    "name": "MockType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 159,
                                    "src": "12419:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                      "typeString": "type(enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 1136,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "OutOfGas",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12419:17:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$159",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "src": "12388:48:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1142,
                              "nodeType": "IfStatement",
                              "src": "12384:77:0",
                              "trueBody": {
                                "id": 1141,
                                "nodeType": "Block",
                                "src": "12438:23:0",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 1138,
                                        "name": "useAllGas",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 968,
                                        "src": "12444:9:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                          "typeString": "function ()"
                                        }
                                      },
                                      "id": 1139,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12444:11:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1140,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12444:11:0"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1147,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1143,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1108,
                                  "src": "12465:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1144,
                                    "name": "methodIdExpectations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 211,
                                    "src": "12474:20:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes4_$_t_bytes_storage_$",
                                      "typeString": "mapping(bytes4 => bytes storage ref)"
                                    }
                                  },
                                  "id": 1146,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1145,
                                    "name": "methodId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1076,
                                    "src": "12495:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12474:30:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "src": "12465:39:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 1148,
                              "nodeType": "ExpressionStatement",
                              "src": "12465:39:0"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1151,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1108,
                              "src": "12554:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 1152,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12554:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1153,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12571:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12554:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1179,
                        "nodeType": "IfStatement",
                        "src": "12550:218:0",
                        "trueBody": {
                          "id": 1178,
                          "nodeType": "Block",
                          "src": "12574:194:0",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_MockType_$159",
                                  "typeString": "enum MockContract.MockType"
                                },
                                "id": 1158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1155,
                                  "name": "fallbackMockType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 221,
                                  "src": "12583:16:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$159",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1156,
                                    "name": "MockType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 159,
                                    "src": "12603:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                      "typeString": "type(enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 1157,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Revert",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12603:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$159",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "src": "12583:35:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1164,
                              "nodeType": "IfStatement",
                              "src": "12579:82:0",
                              "trueBody": {
                                "id": 1163,
                                "nodeType": "Block",
                                "src": "12620:41:0",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1160,
                                          "name": "fallbackRevertMessage",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 226,
                                          "src": "12633:21:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage",
                                            "typeString": "string storage ref"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_storage",
                                            "typeString": "string storage ref"
                                          }
                                        ],
                                        "id": 1159,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -19,
                                          -19
                                        ],
                                        "referencedDeclaration": -19,
                                        "src": "12626:6:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 1161,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12626:29:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1162,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12626:29:0"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_enum$_MockType_$159",
                                  "typeString": "enum MockContract.MockType"
                                },
                                "id": 1168,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1165,
                                  "name": "fallbackMockType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 221,
                                  "src": "12669:16:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$159",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1166,
                                    "name": "MockType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 159,
                                    "src": "12689:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_MockType_$159_$",
                                      "typeString": "type(enum MockContract.MockType)"
                                    }
                                  },
                                  "id": 1167,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "OutOfGas",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12689:17:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_MockType_$159",
                                    "typeString": "enum MockContract.MockType"
                                  }
                                },
                                "src": "12669:37:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1173,
                              "nodeType": "IfStatement",
                              "src": "12665:66:0",
                              "trueBody": {
                                "id": 1172,
                                "nodeType": "Block",
                                "src": "12708:23:0",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 1169,
                                        "name": "useAllGas",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 968,
                                        "src": "12714:9:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                          "typeString": "function ()"
                                        }
                                      },
                                      "id": 1170,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12714:11:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1171,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12714:11:0"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1176,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1174,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1108,
                                  "src": "12735:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1175,
                                  "name": "fallbackExpectation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 224,
                                  "src": "12744:19:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "src": "12735:28:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 1177,
                              "nodeType": "ExpressionStatement",
                              "src": "12735:28:0"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          null,
                          1181
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 1181,
                            "mutability": "mutable",
                            "name": "r",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 1206,
                            "src": "12874:14:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 1180,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "12874:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1197,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "757064617465496e766f636174696f6e436f756e74286279746573342c627974657329",
                                  "id": 1191,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12948:37:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_58cbc02545e9fd028c06e31b6a7d0ce4387bbca3b805ff49a3ac81031a7a267c",
                                    "typeString": "literal_string \"updateInvocationCount(bytes4,bytes)\""
                                  },
                                  "value": "updateInvocationCount(bytes4,bytes)"
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1192,
                                  "name": "methodId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1076,
                                  "src": "12987:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1193,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "12997:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 1194,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "data",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12997:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_58cbc02545e9fd028c06e31b6a7d0ce4387bbca3b805ff49a3ac81031a7a267c",
                                    "typeString": "literal_string \"updateInvocationCount(bytes4,bytes)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1189,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "12924:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 1190,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "12924:23:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 1195,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12924:82:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1184,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "12900:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_MockContract_$1208",
                                      "typeString": "contract MockContract"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_MockContract_$1208",
                                      "typeString": "contract MockContract"
                                    }
                                  ],
                                  "id": 1183,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12892:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1182,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12892:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1185,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12892:13:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "id": 1186,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "12892:18:0",
                              "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": 1188,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "gas"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "argumentTypes": null,
                                "hexValue": "313030303030",
                                "id": 1187,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12916:6:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000_by_1",
                                  "typeString": "int_const 100000"
                                },
                                "value": "100000"
                              }
                            ],
                            "src": "12892:31:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 1196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12892:115:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12871:136:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1202,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1199,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1181,
                                  "src": "13018:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 1200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "13018:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1201,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13030:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "13018:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1198,
                            "name": "assert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -3,
                            "src": "13011:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 1203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13011:21:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1204,
                        "nodeType": "ExpressionStatement",
                        "src": "13011:21:0"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "13048:49:0",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13064:4:0",
                                        "type": "",
                                        "value": "0x20"
                                      },
                                      {
                                        "name": "result",
                                        "nodeType": "YulIdentifier",
                                        "src": "13070:6:0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13060:3:0"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13060:17:0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "result",
                                        "nodeType": "YulIdentifier",
                                        "src": "13085:6:0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "13079:5:0"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13079:13:0"
                                  }
                                ],
                                "functionName": {
                                  "name": "return",
                                  "nodeType": "YulIdentifier",
                                  "src": "13053:6:0"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13053:40:0"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13053:40:0"
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 1108,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13070:6:0",
                            "valueSize": 1
                          },
                          {
                            "declaration": 1108,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13085:6:0",
                            "valueSize": 1
                          }
                        ],
                        "id": 1205,
                        "nodeType": "InlineAssembly",
                        "src": "13039:58:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 1207,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1073,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11837:2:0"
                  },
                  "returnParameters": {
                    "id": 1074,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11857:0:0"
                  },
                  "scope": 1208,
                  "src": "11828:1272:0",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1209,
              "src": "3610:9492:0"
            }
          ],
          "src": "0:13103:0"
        },
        "id": 0
      },
      "contracts/test/Token.sol": {
        "ast": {
          "absolutePath": "contracts/test/Token.sol",
          "exportedSymbols": {
            "Token": [
              1221
            ]
          },
          "id": 1222,
          "license": "LGPL-3.0-only",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1210,
              "literals": [
                "solidity",
                ">=",
                "0.6",
                ".0",
                "<",
                "0.7",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "42:31:1"
            },
            {
              "absolutePath": "@gnosis.pm/mock-contract/contracts/MockContract.sol",
              "file": "@gnosis.pm/mock-contract/contracts/MockContract.sol",
              "id": 1211,
              "nodeType": "ImportDirective",
              "scope": 1222,
              "sourceUnit": 1209,
              "src": "74:61:1",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": null,
              "fullyImplemented": false,
              "id": 1221,
              "linearizedBaseContracts": [
                1221
              ],
              "name": "Token",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": null,
                  "documentation": null,
                  "functionSelector": "a9059cbb",
                  "id": 1220,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": null,
                  "parameters": {
                    "id": 1216,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1213,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1220,
                        "src": "177:11:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1212,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "177:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1215,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1220,
                        "src": "190:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1214,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "190:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "176:28:1"
                  },
                  "returnParameters": {
                    "id": 1219,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1218,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 1220,
                        "src": "223:4:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1217,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "223:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "222:6:1"
                  },
                  "scope": 1221,
                  "src": "159:70:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1222,
              "src": "137:94:1"
            }
          ],
          "src": "42:190:1"
        },
        "id": 1
      }
    }
  }
}
