@aave/governance-crosschain-bridges
Version:
Contracts of Aave Governance Crosschain Bridges
4,870 lines • 263 kB
JSON
{
"id": "7d7dda3377ec9803ba2a49b015cda953",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.10",
"solcLongVersion": "0.8.10+commit.fc410830",
"input": {
"language": "Solidity",
"sources": {
"contracts/mocks/Greeter.sol": {
"content": "//SPDX-License-Identifier: Unlicense\npragma solidity ^0.8.10;\n\ncontract Greeter {\n event MessageUpdated(string newMessage);\n string public message;\n\n constructor() {}\n\n function setMessage(string memory newMessage) public {\n message = newMessage;\n emit MessageUpdated(newMessage);\n }\n}\n"
},
"contracts/mocks/GreeterPayload.sol": {
"content": "//SPDX-License-Identifier: Unlicense\npragma solidity ^0.8.10;\n\nimport {Greeter} from './Greeter.sol';\n\ncontract GreeterPayload {\n event PayloadExecuted(address sender);\n\n function execute(address greeter, string memory newMessage) external {\n Greeter(greeter).setMessage(newMessage);\n emit PayloadExecuted(msg.sender);\n }\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"abi",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.gasEstimates"
],
"": [
"ast"
]
}
},
"metadata": {
"useLiteralContent": true
}
}
},
"output": {
"contracts": {
"contracts/mocks/Greeter.sol": {
"Greeter": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "newMessage",
"type": "string"
}
],
"name": "MessageUpdated",
"type": "event"
},
{
"inputs": [],
"name": "message",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "newMessage",
"type": "string"
}
],
"name": "setMessage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"bytecode": {
"functionDebugData": {
"@_11": {
"entryPoint": null,
"id": 11,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50610370806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063368b87721461003b578063e21f37ce14610050575b600080fd5b61004e6100493660046101f9565b61006e565b005b6100586100bc565b60405161006591906102aa565b60405180910390f35b805161008190600090602084019061014a565b507f8fae638bf5c6396194a6bb16601c4035a07fa48191638ff4102f0d96f14cfefb816040516100b191906102aa565b60405180910390a150565b600080546100c9906102ff565b80601f01602080910402602001604051908101604052809291908181526020018280546100f5906102ff565b80156101425780601f1061011757610100808354040283529160200191610142565b820191906000526020600020905b81548152906001019060200180831161012557829003601f168201915b505050505081565b828054610156906102ff565b90600052602060002090601f01602090048101928261017857600085556101be565b82601f1061019157805160ff19168380011785556101be565b828001600101855582156101be579182015b828111156101be5782518255916020019190600101906101a3565b506101ca9291506101ce565b5090565b5b808211156101ca57600081556001016101cf565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561020b57600080fd5b813567ffffffffffffffff8082111561022357600080fd5b818401915084601f83011261023757600080fd5b813581811115610249576102496101e3565b604051601f8201601f19908116603f01168101908382118183101715610271576102716101e3565b8160405282815287602084870101111561028a57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208083528351808285015260005b818110156102d7578581018301518582016040015282016102bb565b818111156102e9576000604083870101525b50601f01601f1916929092016040019392505050565b600181811c9082168061031357607f821691505b6020821081141561033457634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220bc5a54da14ecaa4403a9299b0e5aa136d0fd3ee262454a3fb5e4c309f564c74564736f6c634300080a0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x370 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x368B8772 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xE21F37CE EQ PUSH2 0x50 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F9 JUMP JUMPDEST PUSH2 0x6E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x58 PUSH2 0xBC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x65 SWAP2 SWAP1 PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP1 MLOAD PUSH2 0x81 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x14A JUMP JUMPDEST POP PUSH32 0x8FAE638BF5C6396194A6BB16601C4035A07FA48191638FF4102F0D96F14CFEFB DUP2 PUSH1 0x40 MLOAD PUSH2 0xB1 SWAP2 SWAP1 PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xC9 SWAP1 PUSH2 0x2FF JUMP JUMPDEST 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 PUSH2 0xF5 SWAP1 PUSH2 0x2FF JUMP JUMPDEST DUP1 ISZERO PUSH2 0x142 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x117 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x142 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 0x125 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x156 SWAP1 PUSH2 0x2FF JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x178 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x1BE JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x191 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x1BE JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x1BE JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1BE JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1A3 JUMP JUMPDEST POP PUSH2 0x1CA SWAP3 SWAP2 POP PUSH2 0x1CE JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1CF JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x223 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x249 JUMPI PUSH2 0x249 PUSH2 0x1E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x271 JUMPI PUSH2 0x271 PUSH2 0x1E3 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x28A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2D7 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x2BB JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2E9 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x313 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x334 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBC GAS SLOAD 0xDA EQ 0xEC 0xAA DIFFICULTY SUB 0xA9 0x29 SWAP12 0xE GAS LOG1 CALLDATASIZE 0xD0 REVERT RETURNDATACOPY 0xE2 PUSH3 0x454A3F 0xB5 0xE4 0xC3 MULMOD CREATE2 PUSH5 0xC74564736F PUSH13 0x634300080A0033000000000000 ",
"sourceMap": "63:233:0:-:0;;;153:16;;;;;;;;;;63:233;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@message_7": {
"entryPoint": 188,
"id": 7,
"parameterSlots": 0,
"returnSlots": 0
},
"@setMessage_25": {
"entryPoint": 110,
"id": 25,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_tuple_t_string_memory_ptr": {
"entryPoint": 505,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 682,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"extract_byte_array_length": {
"entryPoint": 767,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"panic_error_0x41": {
"entryPoint": 483,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:2057:2",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:2",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "46:95:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "63:1:2",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "70:3:2",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "75:10:2",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "66:3:2"
},
"nodeType": "YulFunctionCall",
"src": "66:20:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "56:6:2"
},
"nodeType": "YulFunctionCall",
"src": "56:31:2"
},
"nodeType": "YulExpressionStatement",
"src": "56:31:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "103:1:2",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "106:4:2",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "96:6:2"
},
"nodeType": "YulFunctionCall",
"src": "96:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "96:15:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "127:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "130:4:2",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "120:6:2"
},
"nodeType": "YulFunctionCall",
"src": "120:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "120:15:2"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "14:127:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "226:842:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "272:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "281:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "284:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "274:6:2"
},
"nodeType": "YulFunctionCall",
"src": "274:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "274:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "247:7:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "256:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "243:3:2"
},
"nodeType": "YulFunctionCall",
"src": "243:23:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "268:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "239:3:2"
},
"nodeType": "YulFunctionCall",
"src": "239:32:2"
},
"nodeType": "YulIf",
"src": "236:52:2"
},
{
"nodeType": "YulVariableDeclaration",
"src": "297:37:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "324:9:2"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "311:12:2"
},
"nodeType": "YulFunctionCall",
"src": "311:23:2"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "301:6:2",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "343:28:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "353:18:2",
"type": "",
"value": "0xffffffffffffffff"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "347:2:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "398:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "407:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "410:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "400:6:2"
},
"nodeType": "YulFunctionCall",
"src": "400:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "400:12:2"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "386:6:2"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "394:2:2"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "383:2:2"
},
"nodeType": "YulFunctionCall",
"src": "383:14:2"
},
"nodeType": "YulIf",
"src": "380:34:2"
},
{
"nodeType": "YulVariableDeclaration",
"src": "423:32:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "437:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "448:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "433:3:2"
},
"nodeType": "YulFunctionCall",
"src": "433:22:2"
},
"variables": [
{
"name": "_2",
"nodeType": "YulTypedName",
"src": "427:2:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "503:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "512:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "515:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "505:6:2"
},
"nodeType": "YulFunctionCall",
"src": "505:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "505:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "482:2:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "486:4:2",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "478:3:2"
},
"nodeType": "YulFunctionCall",
"src": "478:13:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "493:7:2"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "474:3:2"
},
"nodeType": "YulFunctionCall",
"src": "474:27:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "467:6:2"
},
"nodeType": "YulFunctionCall",
"src": "467:35:2"
},
"nodeType": "YulIf",
"src": "464:55:2"
},
{
"nodeType": "YulVariableDeclaration",
"src": "528:26:2",
"value": {
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "551:2:2"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "538:12:2"
},
"nodeType": "YulFunctionCall",
"src": "538:16:2"
},
"variables": [
{
"name": "_3",
"nodeType": "YulTypedName",
"src": "532:2:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "577:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "579:16:2"
},
"nodeType": "YulFunctionCall",
"src": "579:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "579:18:2"
}
]
},
"condition": {
"arguments": [
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "569:2:2"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "573:2:2"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "566:2:2"
},
"nodeType": "YulFunctionCall",
"src": "566:10:2"
},
"nodeType": "YulIf",
"src": "563:36:2"
},
{
"nodeType": "YulVariableDeclaration",
"src": "608:17:2",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "622:2:2",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "618:3:2"
},
"nodeType": "YulFunctionCall",
"src": "618:7:2"
},
"variables": [
{
"name": "_4",
"nodeType": "YulTypedName",
"src": "612:2:2",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "634:23:2",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "654:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "648:5:2"
},
"nodeType": "YulFunctionCall",
"src": "648:9:2"
},
"variables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "638:6:2",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "666:71:2",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "688:6:2"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "712:2:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "716:4:2",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "708:3:2"
},
"nodeType": "YulFunctionCall",
"src": "708:13:2"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "723:2:2"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "704:3:2"
},
"nodeType": "YulFunctionCall",
"src": "704:22:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "728:2:2",
"type": "",
"value": "63"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "700:3:2"
},
"nodeType": "YulFunctionCall",
"src": "700:31:2"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "733:2:2"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "696:3:2"
},
"nodeType": "YulFunctionCall",
"src": "696:40:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "684:3:2"
},
"nodeType": "YulFunctionCall",
"src": "684:53:2"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "670:10:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "796:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "798:16:2"
},
"nodeType": "YulFunctionCall",
"src": "798:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "798:18:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "755:10:2"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "767:2:2"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "752:2:2"
},
"nodeType": "YulFunctionCall",
"src": "752:18:2"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "775:10:2"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "787:6:2"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "772:2:2"
},
"nodeType": "YulFunctionCall",
"src": "772:22:2"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "749:2:2"
},
"nodeType": "YulFunctionCall",
"src": "749:46:2"
},
"nodeType": "YulIf",
"src": "746:72:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "834:2:2",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "838:10:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "827:6:2"
},
"nodeType": "YulFunctionCall",
"src": "827:22:2"
},
"nodeType": "YulExpressionStatement",
"src": "827:22:2"
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "865:6:2"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "873:2:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "858:6:2"
},
"nodeType": "YulFunctionCall",
"src": "858:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "858:18:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "922:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "931:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "934:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "924:6:2"
},
"nodeType": "YulFunctionCall",
"src": "924:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "924:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "899:2:2"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "903:2:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "895:3:2"
},
"nodeType": "YulFunctionCall",
"src": "895:11:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "908:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "891:3:2"
},
"nodeType": "YulFunctionCall",
"src": "891:20:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "913:7:2"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "888:2:2"
},
"nodeType": "YulFunctionCall",
"src": "888:33:2"
},
"nodeType": "YulIf",
"src": "885:53:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "964:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "972:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "960:3:2"
},
"nodeType": "YulFunctionCall",
"src": "960:15:2"
},
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "981:2:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "985:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "977:3:2"
},
"nodeType": "YulFunctionCall",
"src": "977:11:2"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "990:2:2"
}
],
"functionName": {
"name": "calldatacopy",
"nodeType": "YulIdentifier",
"src": "947:12:2"
},
"nodeType": "YulFunctionCall",
"src": "947:46:2"
},
"nodeType": "YulExpressionStatement",
"src": "947:46:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1017:6:2"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "1025:2:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1013:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1013:15:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1030:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1009:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1009:24:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1035:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1002:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1002:35:2"
},
"nodeType": "YulExpressionStatement",
"src": "1002:35:2"
},
{
"nodeType": "YulAssignment",
"src": "1046:16:2",
"value": {
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1056:6:2"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1046:6:2"
}
]
}
]
},
"name": "abi_decode_tuple_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "192:9:2",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "203:7:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "215:6:2",
"type": ""
}
],
"src": "146:922:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1194:476:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1204:12:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1214:2:2",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "1208:2:2",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1232:9:2"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1243:2:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1225:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1225:21:2"
},
"nodeType": "YulExpressionStatement",
"src": "1225:21:2"
},
{
"nodeType": "YulVariableDeclaration",
"src": "1255:27:2",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1275:6:2"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1269:5:2"
},
"nodeType": "YulFunctionCall",
"src": "1269:13:2"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1259:6:2",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1302:9:2"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1313:2:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1298:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1298:18:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1318:6:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1291:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1291:34:2"
},
"nodeType": "YulExpressionStatement",
"src": "1291:34:2"
},
{
"nodeType": "YulVariableDeclaration",
"src": "1334:10:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1343:1:2",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "1338:1:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1403:90:2",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1432:9:2"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1443:1:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1428:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1428:17:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1447:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1424:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1424:26:2"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1466:6:2"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1474:1:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1462:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1462:14:2"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1478:2:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1458:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1458:23:2"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1452:5:2"
},
"nodeType": "YulFunctionCall",
"src": "1452:30:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1417:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1417:66:2"
},
"nodeType": "YulExpressionStatement",
"src": "1417:66:2"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1364:1:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1367:6:2"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1361:2:2"
},
"nodeType": "YulFunctionCall",
"src": "1361:13:2"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "1375:19:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1377:15:2",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1386:1:2"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1389:2:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1382:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1382:10:2"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1377:1:2"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "1357:3:2",
"statements": []
},
"src": "1353:140:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1527:66:2",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1556:9:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1567:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1552:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1552:22:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1576:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1548:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1548:31:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1581:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1541:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1541:42:2"
},
"nodeType": "YulExpressionStatement",
"src": "1541:42:2"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1508:1:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1511:6:2"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1505:2:2"
},
"nodeType": "YulFunctionCall",
"src": "1505:13:2"
},
"nodeType": "YulIf",
"src": "1502:91:2"
},
{
"nodeType": "YulAssignment",
"src": "1602:62:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1618:9:2"
},
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1637:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1645:2:2",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1633:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1633:15:2"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1654:2:2",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "1650:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1650:7:2"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1629:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1629:29:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1614:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1614:45:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1661:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1610:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1610:54:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1602:4:2"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1163:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1174:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1185:4:2",
"type": ""
}
],
"src": "1073:597:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1730:325:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1740:22:2",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1754:1:2",
"type": "",
"value": "1"
},
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1757:4:2"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "1750:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1750:12:2"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1740:6:2"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "1771:38:2",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "1801:4:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1807:1:2",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1797:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1797:12:2"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "1775:18:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1848:31:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1850:27:2",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1864:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1872:4:2",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1860:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1860:17:2"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1850:6:2"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "1828:18:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "1821:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1821:26:2"
},
"nodeType": "YulIf",
"src": "1818:61:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1938:111:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1959:1:2",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1966:3:2",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1971:10:2",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1962:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1962:20:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1952:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1952:31:2"
},
"nodeType": "YulExpressionStatement",
"src": "1952:31:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2003:1:2",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2006:4:2",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1996:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1996:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "1996:15:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2031:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2034:4:2",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2024:6:2"
},
"nodeType": "YulFunctionCall",
"src": "2024:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "2024:15:2"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "1894:18:2"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1917:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1925:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1914:2:2"
},
"nodeType": "YulFunctionCall",
"src": "1914:14:2"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "1891:2:2"
},
"nodeType": "YulFunctionCall",
"src": "1891:38:2"
},
"nodeType": "YulIf",
"src": "1888:161:2"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "1710:4:2",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1719:6:2",
"type": ""
}
],
"src": "1675:380:2"
}
]
},
"contents": "{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value0 := memPtr\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(headStart, length), 64), 0)\n }\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n}",
"id": 2,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100365760003560e01c8063368b87721461003b578063e21f37ce14610050575b600080fd5b61004e6100493660046101f9565b61006e565b005b6100586100bc565b60405161006591906102aa565b60405180910390f35b805161008190600090602084019061014a565b507f8fae638bf5c6396194a6bb16601c4035a07fa48191638ff4102f0d96f14cfefb816040516100b191906102aa565b60405180910390a150565b600080546100c9906102ff565b80601f01602080910402602001604051908101604052809291908181526020018280546100f5906102ff565b80156101425780601f1061011757610100808354040283529160200191610142565b820191906000526020600020905b81548152906001019060200180831161012557829003601f168201915b505050505081565b828054610156906102ff565b90600052602060002090601f01602090048101928261017857600085556101be565b82601f1061019157805160ff19168380011785556101be565b828001600101855582156101be579182015b828111156101be5782518255916020019190600101906101a3565b506101ca9291506101ce565b5090565b5b808211156101ca57600081556001016101cf565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561020b57600080fd5b813567ffffffffffffffff8082111561022357600080fd5b818401915084601f83011261023757600080fd5b813581811115610249576102496101e3565b604051601f8201601f19908116603f01168101908382118183101715610271576102716101e3565b8160405282815287602084870101111561028a57600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208083528351808285015260005b818110156102d7578581018301518582016040015282016102bb565b818111156102e9576000604083870101525b50601f01601f1916929092016040019392505050565b600181811c9082168061031357607f821691505b6020821081141561033457634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220bc5a54da14ecaa4403a9299b0e5aa136d0fd3ee262454a3fb5e4c309f564c74564736f6c634300080a0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x368B8772 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xE21F37CE EQ PUSH2 0x50 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F9 JUMP JUMPDEST PUSH2 0x6E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x58 PUSH2 0xBC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x65 SWAP2 SWAP1 PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP1 MLOAD PUSH2 0x81 SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x14A JUMP JUMPDEST POP PUSH32 0x8FAE638BF5C6396194A6BB16601C4035A07FA48191638FF4102F0D96F14CFEFB DUP2 PUSH1 0x40 MLOAD PUSH2 0xB1 SWAP2 SWAP1 PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xC9 SWAP1 PUSH2 0x2FF JUMP JUMPDEST 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 PUSH2 0xF5 SWAP1 PUSH2 0x2FF JUMP JUMPDEST DUP1 ISZERO PUSH2 0x142 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x117 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x142 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 0x125 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x156 SWAP1 PUSH2 0x2FF JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x178 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x1BE JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x191 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x1BE JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x1BE JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1BE JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1A3 JUMP JUMPDEST POP PUSH2 0x1CA SWAP3 SWAP2 POP PUSH2 0x1CE JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1CA JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1CF JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x223 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x249 JUMPI PUSH2 0x249 PUSH2 0x1E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x271 JUMPI PUSH2 0x271 PUSH2 0x1E3 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x28A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2D7 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x2BB JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2E9 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x313 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x334 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBC GAS SLOAD 0xDA EQ 0xEC 0xAA DIFFICULTY SUB 0xA9 0x29 SWAP12 0xE GAS LOG1 CALLDATASIZE 0xD0 REVERT RETURNDATACOPY 0xE2 PUSH3 0x454A3F 0xB5 0xE4 0xC3 MULMOD CREATE2 PUSH5 0xC74564736F PUSH13 0x634300080A0033000000000000 ",
"sourceMap": "63:233:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;173:121;;;;;;:::i;:::-;;:::i;:::-;;127:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;173:121;232:20;;;;:7;;:20;;;;;:::i;:::-;;263:26;278:10;263:26;;;;;;:::i;:::-;;;;;;;;173:121;:::o;127:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:2;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:922;215:6;268:2;256:9;247:7;243:23;239:32;236:52;;;284:1;281;274:12;236:52;324:9;311:23;353:18;394:2;386:6;383:14;380:34;;;410:1;407;400:12;380:34;448:6;437:9;433:22;423:32;;493:7;486:4;482:2;478:13;474:27;464:55;;515:1;512;505:12;464:55;551:2;538:16;573:2;569;566:10;563:36;;;579:18;;:::i;:::-;654:2;648:9;622:2;708:13;;-1:-1:-1;;704:22:2;;;728:2;700:31;696:40;684:53;;;752:18;;;772:22;;;749:46;746:72;;;798:18;;:::i;:::-;838:10;834:2;827:22;873:2;865:6;858:18;913:7;908:2;903;899;895:11;891:20;888:33;885:53;;;934:1;931;924:12;885:53;990:2;985;981;977:11;972:2;964:6;960:15;947:46;1035:1;1013:15;;;1030:2;1009:24;1002:35;;;;-1:-1:-1;1017:6:2;146:922;-1:-1:-1;;;;;146:922:2:o;1073:597::-;1185:4;1214:2;1243;1232:9;1225:21;1275:6;1269:13;1318:6;1313:2;1302:9;1298:18;1291:34;1343:1;1353:140;1367:6;1364:1;1361:13;1353:140;;;1462:14;;;1458:23;;1452:30;1428:17;;;1447:2;1424:26;1417:66;1382:10;;1353:140;;;1511:6;1508:1;1505:13;1502:91;;;1581:1;1576:2;1567:6;1556:9;1552:22;1548:31;1541:42;1502:91;-1:-1:-1;1654:2:2;1633:15;-1:-1:-1;;1629:29:2;1614:45;;;;1661:2;1610:54;;1073:597;-1:-1:-1;;;1073:597:2:o;1675:380::-;1754:1;1750:12;;;;1797;;;1818:61;;1872:4;1864:6;1860:17;1850:27;;1818:61;1925:2;1917:6;1914:14;1894:18;1891:38;1888:161;;;1971:10;1966:3;1962:20;1959:1;1952:31;2006:4;2003:1;1996:15;2034:4;2031:1;2024:15;1888:161;;1675:380;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "176000",
"executionCost": "220",
"totalCost": "176220"
},
"external": {
"message()": "infinite",
"setMessage(string)": "infinite"
}
},
"methodIdentifiers": {
"message()": "e21f37ce",
"setMessage(string)": "368b8772"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"newMessage\",\"type\":\"string\"}],\"name\":\"MessageUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"message\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newMessage\",\"type\":\"string\"}],\"name\":\"setMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/Greeter.sol\":\"Greeter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/mocks/Greeter.sol\":{\"content\":\"//SPDX-License-Identifier: Unlicense\\npragma solidity ^0.8.10;\\n\\ncontract Greeter {\\n event MessageUpdated(string newMessage);\\n string public message;\\n\\n constructor() {}\\n\\n function setMessage(string memory newMessage) public {\\n message = newMessage;\\n emit MessageUpdated(newMessage);\\n }\\n}\\n\",\"keccak256\":\"0x68396bc317394e01f7b46cabecf62481fdfe62644131d665c3df6ca5e1a5ee75\",\"license\":\"Unlicense\"}},\"version\":1}",
"storageLayout": {
"storage": [
{
"astId": 7,
"contract": "contracts/mocks/Greeter.sol:Greeter",
"label": "message",
"offset": 0,
"slot": "0",
"type": "t_string_storage"
}
],
"types": {
"t_string_storage": {
"encoding": "bytes",
"label": "string",
"numberOfBytes": "32"
}
}
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
},
"contracts/mocks/GreeterPayload.sol": {
"GreeterPayload": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "PayloadExecuted",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "greeter",
"type": "address"
},
{
"internalType": "string",
"name": "newMessage",
"type": "string"
}
],
"name": "execute",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b5061024c806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80638cf3837814610030575b600080fd5b61004361003e3660046100f1565b610045565b005b604051631b45c3b960e11b81526001600160a01b0383169063368b8772906100719084906004016101c1565b600060405180830381600087803b15801561008b57600080fd5b505af115801561009f573d6000803e3d6000fd5b50506040513381527f3eb964223e82e25cebd88973c2b44734fc313d9529c9940abc9f67313acbdb4e9250602001905060405180910390a15050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561010457600080fd5b82356001600160a01b038116811461011b57600080fd5b9150602083013567ffffffffffffffff8082111561013857600080fd5b818501915085601f83011261014c57600080fd5b81358181111561015e5761015e6100db565b604051601f8201601f19908116603f01168101908382118183101715610186576101866100db565b8160405282815288602084870101111561019f57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208083528351808285015260005b818110156101ee578581018301518582016040015282016101d2565b81811115610200576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220d4e3cd9901f873d541e2df0e531a270a3e582104098e7fe6adbe5abfae071c1064736f6c634300080a0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24C DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8CF38378 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0xF1 JUMP JUMPDEST PUSH2 0x45 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1B45C3B9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x368B8772 SWAP1 PUSH2 0x71 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1C1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x3EB964223E82E25CEBD88973C2B44734FC313D9529C9940ABC9F67313ACBDB4E SWAP3 POP PUSH1 0x20 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x138 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x14C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x15E JUMPI PUSH2 0x15E PUSH2 0xDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x186 JUMPI PUSH2 0x186 PUSH2 0xDB JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x19F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1EE JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x1D2 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD4 0xE3 0xCD SWAP10 ADD 0xF8 PUSH20 0xD541E2DF0E531A270A3E582104098E7FE6ADBE5A 0xBF 0xAE SMOD SHR LT PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ",
"sourceMap": "103:229:1:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@execute_54": {
"entryPoint": 69,
"id": 54,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_decode_tuple_t_addresst_string_memory_ptr": {
"entryPoint": 241,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 449,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"panic_error_0x41": {
"entryPoint": 219,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:2054:2",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:2",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "46:95:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "63:1:2",
"type": "",
"value": "0"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "70:3:2",
"type": "",
"value": "224"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "75:10:2",
"type": "",
"value": "0x4e487b71"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "66:3:2"
},
"nodeType": "YulFunctionCall",
"src": "66:20:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "56:6:2"
},
"nodeType": "YulFunctionCall",
"src": "56:31:2"
},
"nodeType": "YulExpressionStatement",
"src": "56:31:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "103:1:2",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "106:4:2",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "96:6:2"
},
"nodeType": "YulFunctionCall",
"src": "96:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "96:15:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "127:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "130:4:2",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "120:6:2"
},
"nodeType": "YulFunctionCall",
"src": "120:15:2"
},
"nodeType": "YulExpressionStatement",
"src": "120:15:2"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "14:127:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "243:999:2",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "289:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "298:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "301:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "291:6:2"
},
"nodeType": "YulFunctionCall",
"src": "291:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "291:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "264:7:2"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "273:9:2"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "260:3:2"
},
"nodeType": "YulFunctionCall",
"src": "260:23:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "285:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "256:3:2"
},
"nodeType": "YulFunctionCall",
"src": "256:32:2"
},
"nodeType": "YulIf",
"src": "253:52:2"
},
{
"nodeType": "YulVariableDeclaration",
"src": "314:36:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "340:9:2"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "327:12:2"
},
"nodeType": "YulFunctionCall",
"src": "327:23:2"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "318:5:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "413:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "422:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "425:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "415:6:2"
},
"nodeType": "YulFunctionCall",
"src": "415:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "415:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "372:5:2"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "383:5:2"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "398:3:2",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "403:1:2",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "394:3:2"
},
"nodeType": "YulFunctionCall",
"src": "394:11:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "407:1:2",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "390:3:2"
},
"nodeType": "YulFunctionCall",
"src": "390:19:2"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "379:3:2"
},
"nodeType": "YulFunctionCall",
"src": "379:31:2"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "369:2:2"
},
"nodeType": "YulFunctionCall",
"src": "369:42:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "362:6:2"
},
"nodeType": "YulFunctionCall",
"src": "362:50:2"
},
"nodeType": "YulIf",
"src": "359:70:2"
},
{
"nodeType": "YulAssignment",
"src": "438:15:2",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "448:5:2"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "438:6:2"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "462:46:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "493:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "504:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "489:3:2"
},
"nodeType": "YulFunctionCall",
"src": "489:18:2"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "476:12:2"
},
"nodeType": "YulFunctionCall",
"src": "476:32:2"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "466:6:2",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "517:28:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "527:18:2",
"type": "",
"value": "0xffffffffffffffff"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "521:2:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "572:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "581:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "584:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "574:6:2"
},
"nodeType": "YulFunctionCall",
"src": "574:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "574:12:2"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "560:6:2"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "568:2:2"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "557:2:2"
},
"nodeType": "YulFunctionCall",
"src": "557:14:2"
},
"nodeType": "YulIf",
"src": "554:34:2"
},
{
"nodeType": "YulVariableDeclaration",
"src": "597:32:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "611:9:2"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "622:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "607:3:2"
},
"nodeType": "YulFunctionCall",
"src": "607:22:2"
},
"variables": [
{
"name": "_2",
"nodeType": "YulTypedName",
"src": "601:2:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "677:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "686:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "689:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "679:6:2"
},
"nodeType": "YulFunctionCall",
"src": "679:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "679:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "656:2:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "660:4:2",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "652:3:2"
},
"nodeType": "YulFunctionCall",
"src": "652:13:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "667:7:2"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "648:3:2"
},
"nodeType": "YulFunctionCall",
"src": "648:27:2"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "641:6:2"
},
"nodeType": "YulFunctionCall",
"src": "641:35:2"
},
"nodeType": "YulIf",
"src": "638:55:2"
},
{
"nodeType": "YulVariableDeclaration",
"src": "702:26:2",
"value": {
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "725:2:2"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "712:12:2"
},
"nodeType": "YulFunctionCall",
"src": "712:16:2"
},
"variables": [
{
"name": "_3",
"nodeType": "YulTypedName",
"src": "706:2:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "751:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "753:16:2"
},
"nodeType": "YulFunctionCall",
"src": "753:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "753:18:2"
}
]
},
"condition": {
"arguments": [
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "743:2:2"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "747:2:2"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "740:2:2"
},
"nodeType": "YulFunctionCall",
"src": "740:10:2"
},
"nodeType": "YulIf",
"src": "737:36:2"
},
{
"nodeType": "YulVariableDeclaration",
"src": "782:17:2",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "796:2:2",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "792:3:2"
},
"nodeType": "YulFunctionCall",
"src": "792:7:2"
},
"variables": [
{
"name": "_4",
"nodeType": "YulTypedName",
"src": "786:2:2",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "808:23:2",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "828:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "822:5:2"
},
"nodeType": "YulFunctionCall",
"src": "822:9:2"
},
"variables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "812:6:2",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "840:71:2",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "862:6:2"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "886:2:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "890:4:2",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "882:3:2"
},
"nodeType": "YulFunctionCall",
"src": "882:13:2"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "897:2:2"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "878:3:2"
},
"nodeType": "YulFunctionCall",
"src": "878:22:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "902:2:2",
"type": "",
"value": "63"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "874:3:2"
},
"nodeType": "YulFunctionCall",
"src": "874:31:2"
},
{
"name": "_4",
"nodeType": "YulIdentifier",
"src": "907:2:2"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "870:3:2"
},
"nodeType": "YulFunctionCall",
"src": "870:40:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "858:3:2"
},
"nodeType": "YulFunctionCall",
"src": "858:53:2"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "844:10:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "970:22:2",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "972:16:2"
},
"nodeType": "YulFunctionCall",
"src": "972:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "972:18:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "929:10:2"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "941:2:2"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "926:2:2"
},
"nodeType": "YulFunctionCall",
"src": "926:18:2"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "949:10:2"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "961:6:2"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "946:2:2"
},
"nodeType": "YulFunctionCall",
"src": "946:22:2"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "923:2:2"
},
"nodeType": "YulFunctionCall",
"src": "923:46:2"
},
"nodeType": "YulIf",
"src": "920:72:2"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1008:2:2",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "1012:10:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1001:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1001:22:2"
},
"nodeType": "YulExpressionStatement",
"src": "1001:22:2"
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1039:6:2"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "1047:2:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1032:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1032:18:2"
},
"nodeType": "YulExpressionStatement",
"src": "1032:18:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1096:16:2",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1105:1:2",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1108:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1098:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1098:12:2"
},
"nodeType": "YulExpressionStatement",
"src": "1098:12:2"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "1073:2:2"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "1077:2:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1069:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1069:11:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1082:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1065:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1065:20:2"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1087:7:2"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1062:2:2"
},
"nodeType": "YulFunctionCall",
"src": "1062:33:2"
},
"nodeType": "YulIf",
"src": "1059:53:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1138:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1146:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1134:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1134:15:2"
},
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "1155:2:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1159:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1151:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1151:11:2"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "1164:2:2"
}
],
"functionName": {
"name": "calldatacopy",
"nodeType": "YulIdentifier",
"src": "1121:12:2"
},
"nodeType": "YulFunctionCall",
"src": "1121:46:2"
},
"nodeType": "YulExpressionStatement",
"src": "1121:46:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1191:6:2"
},
{
"name": "_3",
"nodeType": "YulIdentifier",
"src": "1199:2:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1187:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1187:15:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1204:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1183:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1183:24:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1209:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1176:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1176:35:2"
},
"nodeType": "YulExpressionStatement",
"src": "1176:35:2"
},
{
"nodeType": "YulAssignment",
"src": "1220:16:2",
"value": {
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "1230:6:2"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1220:6:2"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "201:9:2",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "212:7:2",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "224:6:2",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "232:6:2",
"type": ""
}
],
"src": "146:1096:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1368:476:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1378:12:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1388:2:2",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "1382:2:2",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1406:9:2"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1417:2:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1399:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1399:21:2"
},
"nodeType": "YulExpressionStatement",
"src": "1399:21:2"
},
{
"nodeType": "YulVariableDeclaration",
"src": "1429:27:2",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1449:6:2"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1443:5:2"
},
"nodeType": "YulFunctionCall",
"src": "1443:13:2"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1433:6:2",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1476:9:2"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1487:2:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1472:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1472:18:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1492:6:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1465:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1465:34:2"
},
"nodeType": "YulExpressionStatement",
"src": "1465:34:2"
},
{
"nodeType": "YulVariableDeclaration",
"src": "1508:10:2",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1517:1:2",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "1512:1:2",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1577:90:2",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1606:9:2"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1617:1:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1602:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1602:17:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1621:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1598:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1598:26:2"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1640:6:2"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1648:1:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1636:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1636:14:2"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1652:2:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1632:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1632:23:2"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1626:5:2"
},
"nodeType": "YulFunctionCall",
"src": "1626:30:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1591:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1591:66:2"
},
"nodeType": "YulExpressionStatement",
"src": "1591:66:2"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1538:1:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1541:6:2"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1535:2:2"
},
"nodeType": "YulFunctionCall",
"src": "1535:13:2"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "1549:19:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1551:15:2",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1560:1:2"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1563:2:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1556:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1556:10:2"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1551:1:2"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "1531:3:2",
"statements": []
},
"src": "1527:140:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1701:66:2",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1730:9:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1741:6:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1726:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1726:22:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1750:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1722:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1722:31:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1755:1:2",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1715:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1715:42:2"
},
"nodeType": "YulExpressionStatement",
"src": "1715:42:2"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1682:1:2"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1685:6:2"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1679:2:2"
},
"nodeType": "YulFunctionCall",
"src": "1679:13:2"
},
"nodeType": "YulIf",
"src": "1676:91:2"
},
{
"nodeType": "YulAssignment",
"src": "1776:62:2",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1792:9:2"
},
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1811:6:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1819:2:2",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1807:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1807:15:2"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1828:2:2",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "1824:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1824:7:2"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1803:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1803:29:2"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1788:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1788:45:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1835:2:2",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1784:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1784:54:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1776:4:2"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1337:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1348:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1359:4:2",
"type": ""
}
],
"src": "1247:597:2"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1950:102:2",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1960:26:2",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1972:9:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1983:2:2",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1968:3:2"
},
"nodeType": "YulFunctionCall",
"src": "1968:18:2"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1960:4:2"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2002:9:2"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2017:6:2"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2033:3:2",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2038:1:2",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "2029:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2029:11:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2042:1:2",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2025:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2025:19:2"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2013:3:2"
},
"nodeType": "YulFunctionCall",
"src": "2013:32:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1995:6:2"
},
"nodeType": "YulFunctionCall",
"src": "1995:51:2"
},
"nodeType": "YulExpressionStatement",
"src": "1995:51:2"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1919:9:2",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1930:6:2",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1941:4:2",
"type": ""
}
],
"src": "1849:203:2"
}
]
},
"contents": "{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_string_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(headStart, length), 64), 0)\n }\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n}",
"id": 2,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c80638cf3837814610030575b600080fd5b61004361003e3660046100f1565b610045565b005b604051631b45c3b960e11b81526001600160a01b0383169063368b8772906100719084906004016101c1565b600060405180830381600087803b15801561008b57600080fd5b505af115801561009f573d6000803e3d6000fd5b50506040513381527f3eb964223e82e25cebd88973c2b44734fc313d9529c9940abc9f67313acbdb4e9250602001905060405180910390a15050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561010457600080fd5b82356001600160a01b038116811461011b57600080fd5b9150602083013567ffffffffffffffff8082111561013857600080fd5b818501915085601f83011261014c57600080fd5b81358181111561015e5761015e6100db565b604051601f8201601f19908116603f01168101908382118183101715610186576101866100db565b8160405282815288602084870101111561019f57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600060208083528351808285015260005b818110156101ee578581018301518582016040015282016101d2565b81811115610200576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220d4e3cd9901f873d541e2df0e531a270a3e582104098e7fe6adbe5abfae071c1064736f6c634300080a0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8CF38378 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0xF1 JUMP JUMPDEST PUSH2 0x45 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1B45C3B9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x368B8772 SWAP1 PUSH2 0x71 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1C1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x3EB964223E82E25CEBD88973C2B44734FC313D9529C9940ABC9F67313ACBDB4E SWAP3 POP PUSH1 0x20 ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x11B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x138 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x14C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x15E JUMPI PUSH2 0x15E PUSH2 0xDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x186 JUMPI PUSH2 0x186 PUSH2 0xDB JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x19F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1EE JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x1D2 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD4 0xE3 0xCD SWAP10 ADD 0xF8 PUSH20 0xD541E2DF0E531A270A3E582104098E7FE6ADBE5A 0xBF 0xAE SMOD SHR LT PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ",
"sourceMap": "103:229:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;173:157;;;;;;:::i;:::-;;:::i;:::-;;;248:39;;-1:-1:-1;;;248:39:1;;-1:-1:-1;;;;;248:27:1;;;;;:39;;276:10;;248:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;298:27:1;;314:10;1995:51:2;;298:27:1;;-1:-1:-1;1983:2:2;1968:18;;-1:-1:-1;298:27:1;;;;;;;173:157;;:::o;14:127:2:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:1096;224:6;232;285:2;273:9;264:7;260:23;256:32;253:52;;;301:1;298;291:12;253:52;327:23;;-1:-1:-1;;;;;379:31:2;;369:42;;359:70;;425:1;422;415:12;359:70;448:5;-1:-1:-1;504:2:2;489:18;;476:32;527:18;557:14;;;554:34;;;584:1;581;574:12;554:34;622:6;611:9;607:22;597:32;;667:7;660:4;656:2;652:13;648:27;638:55;;689:1;686;679:12;638:55;725:2;712:16;747:2;743;740:10;737:36;;;753:18;;:::i;:::-;828:2;822:9;796:2;882:13;;-1:-1:-1;;878:22:2;;;902:2;874:31;870:40;858:53;;;926:18;;;946:22;;;923:46;920:72;;;972:18;;:::i;:::-;1012:10;1008:2;1001:22;1047:2;1039:6;1032:18;1087:7;1082:2;1077;1073;1069:11;1065:20;1062:33;1059:53;;;1108:1;1105;1098:12;1059:53;1164:2;1159;1155;1151:11;1146:2;1138:6;1134:15;1121:46;1209:1;1204:2;1199;1191:6;1187:15;1183:24;1176:35;1230:6;1220:16;;;;;;;146:1096;;;;;:::o;1247:597::-;1359:4;1388:2;1417;1406:9;1399:21;1449:6;1443:13;1492:6;1487:2;1476:9;1472:18;1465:34;1517:1;1527:140;1541:6;1538:1;1535:13;1527:140;;;1636:14;;;1632:23;;1626:30;1602:17;;;1621:2;1598:26;1591:66;1556:10;;1527:140;;;1685:6;1682:1;1679:13;1676:91;;;1755:1;1750:2;1741:6;1730:9;1726:22;1722:31;1715:42;1676:91;-1:-1:-1;1828:2:2;1807:15;-1:-1:-1;;1803:29:2;1788:45;;;;1835:2;1784:54;;1247:597;-1:-1:-1;;;1247:597:2:o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "117600",
"executionCost": "165",
"totalCost": "117765"
},
"external": {
"execute(address,string)": "infinite"
}
},
"methodIdentifiers": {
"execute(address,string)": "8cf38378"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"PayloadExecuted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"greeter\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"newMessage\",\"type\":\"string\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/GreeterPayload.sol\":\"GreeterPayload\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/mocks/Greeter.sol\":{\"content\":\"//SPDX-License-Identifier: Unlicense\\npragma solidity ^0.8.10;\\n\\ncontract Greeter {\\n event MessageUpdated(string newMessage);\\n string public message;\\n\\n constructor() {}\\n\\n function setMessage(string memory newMessage) public {\\n message = newMessage;\\n emit MessageUpdated(newMessage);\\n }\\n}\\n\",\"keccak256\":\"0x68396bc317394e01f7b46cabecf62481fdfe62644131d665c3df6ca5e1a5ee75\",\"license\":\"Unlicense\"},\"contracts/mocks/GreeterPayload.sol\":{\"content\":\"//SPDX-License-Identifier: Unlicense\\npragma solidity ^0.8.10;\\n\\nimport {Greeter} from './Greeter.sol';\\n\\ncontract GreeterPayload {\\n event PayloadExecuted(address sender);\\n\\n function execute(address greeter, string memory newMessage) external {\\n Greeter(greeter).setMessage(newMessage);\\n emit PayloadExecuted(msg.sender);\\n }\\n}\\n\",\"keccak256\":\"0x15657daff923d2a3363c0b4b077f90e51f492be74ecfec6dda794820fe632bd5\",\"license\":\"Unlicense\"}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
}
},
"sources": {
"contracts/mocks/Greeter.sol": {
"ast": {
"absolutePath": "contracts/mocks/Greeter.sol",
"exportedSymbols": {
"Greeter": [
26
]
},
"id": 27,
"license": "Unlicense",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
"^",
"0.8",
".10"
],
"nodeType": "PragmaDirective",
"src": "37:24:0"
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "Greeter",
"contractDependencies": [],
"contractKind": "contract",
"fullyImplemented": true,
"id": 26,
"linearizedBaseContracts": [
26
],
"name": "Greeter",
"nameLocation": "72:7:0",
"nodeType": "ContractDefinition",
"nodes": [
{
"anonymous": false,
"id": 5,
"name": "MessageUpdated",
"nameLocation": "90:14:0",
"nodeType": "EventDefinition",
"parameters": {
"id": 4,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 3,
"indexed": false,
"mutability": "mutable",
"name": "newMessage",
"nameLocation": "112:10:0",
"nodeType": "VariableDeclaration",
"scope": 5,
"src": "105:17:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 2,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "105:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "104:19:0"
},
"src": "84:40:0"
},
{
"constant": false,
"functionSelector": "e21f37ce",
"id": 7,
"mutability": "mutable",
"name": "message",
"nameLocation": "141:7:0",
"nodeType": "VariableDeclaration",
"scope": 26,
"src": "127:21:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string"
},
"typeName": {
"id": 6,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "127:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "public"
},
{
"body": {
"id": 10,
"nodeType": "Block",
"src": "167:2:0",
"statements": []
},
"id": 11,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 8,
"nodeType": "ParameterList",
"parameters": [],
"src": "164:2:0"
},
"returnParameters": {
"id": 9,
"nodeType": "ParameterList",
"parameters": [],
"src": "167:0:0"
},
"scope": 26,
"src": "153:16:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 24,
"nodeType": "Block",
"src": "226:68:0",
"statements": [
{
"expression": {
"id": 18,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 16,
"name": "message",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 7,
"src": "232:7:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 17,
"name": "newMessage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13,
"src": "242:10:0",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"src": "232:20:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"id": 19,
"nodeType": "ExpressionStatement",
"src": "232:20:0"
},
{
"eventCall": {
"arguments": [
{
"id": 21,
"name": "newMessage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13,
"src": "278:10:0",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 20,
"name": "MessageUpdated",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5,
"src": "263:14:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory)"
}
},
"id": 22,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "263:26:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 23,
"nodeType": "EmitStatement",
"src": "258:31:0"
}
]
},
"functionSelector": "368b8772",
"id": 25,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "setMessage",
"nameLocation": "182:10:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 14,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 13,
"mutability": "mutable",
"name": "newMessage",
"nameLocation": "207:10:0",
"nodeType": "VariableDeclaration",
"scope": 25,
"src": "193:24:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 12,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "193:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "192:26:0"
},
"returnParameters": {
"id": 15,
"nodeType": "ParameterList",
"parameters": [],
"src": "226:0:0"
},
"scope": 26,
"src": "173:121:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
}
],
"scope": 27,
"src": "63:233:0",
"usedErrors": []
}
],
"src": "37:260:0"
},
"id": 0
},
"contracts/mocks/GreeterPayload.sol": {
"ast": {
"absolutePath": "contracts/mocks/GreeterPayload.sol",
"exportedSymbols": {
"Greeter": [
26
],
"GreeterPayload": [
55
]
},
"id": 56,
"license": "Unlicense",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 28,
"literals": [
"solidity",
"^",
"0.8",
".10"
],
"nodeType": "PragmaDirective",
"src": "37:24:1"
},
{
"absolutePath": "contracts/mocks/Greeter.sol",
"file": "./Greeter.sol",
"id": 30,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 56,
"sourceUnit": 27,
"src": "63:38:1",
"symbolAliases": [
{
"foreign": {
"id": 29,
"name": "Greeter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"src": "71:7:1",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "GreeterPayload",
"contractDependencies": [],
"contractKind": "contract",
"fullyImplemented": true,
"id": 55,
"linearizedBaseContracts": [
55
],
"name": "GreeterPayload",
"nameLocation": "112:14:1",
"nodeType": "ContractDefinition",
"nodes": [
{
"anonymous": false,
"id": 34,
"name": "PayloadExecuted",
"nameLocation": "137:15:1",
"nodeType": "EventDefinition",
"parameters": {
"id": 33,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 32,
"indexed": false,
"mutability": "mutable",
"name": "sender",
"nameLocation": "161:6:1",
"nodeType": "VariableDeclaration",
"scope": 34,
"src": "153:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 31,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "153:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "152:16:1"
},
"src": "131:38:1"
},
{
"body": {
"id": 53,
"nodeType": "Block",
"src": "242:88:1",
"statements": [
{
"expression": {
"arguments": [
{
"id": 45,
"name": "newMessage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 38,
"src": "276:10:1",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"expression": {
"arguments": [
{
"id": 42,
"name": "greeter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 36,
"src": "256:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 41,
"name": "Greeter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 26,
"src": "248:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Greeter_$26_$",
"typeString": "type(contract Greeter)"
}
},
"id": 43,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "248:16:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_Greeter_$26",
"typeString": "contract Greeter"
}
},
"id": 44,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "setMessage",
"nodeType": "MemberAccess",
"referencedDeclaration": 25,
"src": "248:27:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) external"
}
},
"id": 46,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "248:39:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 47,
"nodeType": "ExpressionStatement",
"src": "248:39:1"
},
{
"eventCall": {
"arguments": [
{
"expression": {
"id": 49,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "314:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 50,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "314:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 48,
"name": "PayloadExecuted",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 34,
"src": "298:15:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 51,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "298:27:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 52,
"nodeType": "EmitStatement",
"src": "293:32:1"
}
]
},
"functionSelector": "8cf38378",
"id": 54,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "execute",
"nameLocation": "182:7:1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 39,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 36,
"mutability": "mutable",
"name": "greeter",
"nameLocation": "198:7:1",
"nodeType": "VariableDeclaration",
"scope": 54,
"src": "190:15:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 35,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "190:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 38,
"mutability": "mutable",
"name": "newMessage",
"nameLocation": "221:10:1",
"nodeType": "VariableDeclaration",
"scope": 54,
"src": "207:24:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 37,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "207:6:1",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "189:43:1"
},
"returnParameters": {
"id": 40,
"nodeType": "ParameterList",
"parameters": [],
"src": "242:0:1"
},
"scope": 55,
"src": "173:157:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 56,
"src": "103:229:1",
"usedErrors": []
}
],
"src": "37:296:1"
},
"id": 1
}
}
}
}