Skip to content

Instantly share code, notes, and snippets.

@mverzilli
Created August 24, 2022 11:55
Show Gist options
  • Save mverzilli/0600c27c4f549008c096149cacb1f2ba to your computer and use it in GitHub Desktop.
Save mverzilli/0600c27c4f549008c096149cacb1f2ba to your computer and use it in GitHub Desktop.
{
"id": "6e528676131d75bd50ad7a6ea7219590",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.2",
"solcLongVersion": "0.8.2+commit.661d1103",
"input": {
"language": "Solidity",
"sources": {
"contracts/WithLib.sol": {
"content": "//SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nlibrary Greeter {\n function greet() public pure returns(string memory) {\n return \"Salutations!\";\n }\n}\n\ncontract WithLib {\n uint256 public value;\n constructor(uint256 initialValue) {\n value = initialValue;\n }\n\n function greet() public pure returns(string memory) {\n return Greeter.greet();\n }\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"abi",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers"
],
"": [
"ast"
]
}
}
}
},
"output": {
"contracts": {
"contracts/WithLib.sol": {
"Greeter": {
"abi": [
{
"inputs": [],
"name": "greet",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"evm": {
"bytecode": {
"generatedSources": [],
"linkReferences": {},
"object": "610186610053600b82828239805160001a607314610046577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063cfae32171461003a575b600080fd5b610042610058565b60405161004f91906100ce565b60405180910390f35b60606040518060400160405280600c81526020017f53616c75746174696f6e73210000000000000000000000000000000000000000815250905090565b60006100a0826100f0565b6100aa81856100fb565b93506100ba81856020860161010c565b6100c38161013f565b840191505092915050565b600060208201905081810360008301526100e88184610095565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561012a57808201518184015260208101905061010f565b83811115610139576000848401525b50505050565b6000601f19601f830116905091905056fea26469706673582212206851238e329bbd955768d6690287ec053d062b732f385925982b6af23196defb64736f6c63430008020033",
"opcodes": "PUSH2 0x186 PUSH2 0x53 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x46 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x35 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xCFAE3217 EQ PUSH2 0x3A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x42 PUSH2 0x58 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4F SWAP2 SWAP1 PUSH2 0xCE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x53616C75746174696F6E73210000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA0 DUP3 PUSH2 0xF0 JUMP JUMPDEST PUSH2 0xAA DUP2 DUP6 PUSH2 0xFB JUMP JUMPDEST SWAP4 POP PUSH2 0xBA DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x10C JUMP JUMPDEST PUSH2 0xC3 DUP2 PUSH2 0x13F JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xE8 DUP2 DUP5 PUSH2 0x95 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x10F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH9 0x51238E329BBD955768 0xD6 PUSH10 0x287EC053D062B732F38 MSIZE 0x25 SWAP9 0x2B PUSH11 0xF23196DEFB64736F6C6343 STOP ADDMOD MUL STOP CALLER ",
"sourceMap": "56:114:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:1434:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "107:280:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "117:53:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "164:5:1"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "131:32:1"
},
"nodeType": "YulFunctionCall",
"src": "131:39:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "121:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "179:86:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "253:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "258:6:1"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack_library",
"nodeType": "YulIdentifier",
"src": "186:66:1"
},
"nodeType": "YulFunctionCall",
"src": "186:79:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "179:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "300:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "307:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "296:3:1"
},
"nodeType": "YulFunctionCall",
"src": "296:16:1"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "314:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "319:6:1"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "274:21:1"
},
"nodeType": "YulFunctionCall",
"src": "274:52:1"
},
"nodeType": "YulExpressionStatement",
"src": "274:52:1"
},
{
"nodeType": "YulAssignment",
"src": "335:46:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "346:3:1"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "373:6:1"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "351:21:1"
},
"nodeType": "YulFunctionCall",
"src": "351:29:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "342:3:1"
},
"nodeType": "YulFunctionCall",
"src": "342:39:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "335:3:1"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack_library",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "88:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "95:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "103:3:1",
"type": ""
}
],
"src": "7:380:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "519:203:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "529:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "541:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "552:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "537:3:1"
},
"nodeType": "YulFunctionCall",
"src": "537:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "529:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "576:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "587:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "572:3:1"
},
"nodeType": "YulFunctionCall",
"src": "572:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "595:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "601:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "591:3:1"
},
"nodeType": "YulFunctionCall",
"src": "591:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "565:6:1"
},
"nodeType": "YulFunctionCall",
"src": "565:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "565:47:1"
},
{
"nodeType": "YulAssignment",
"src": "621:94:1",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "701:6:1"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "710:4:1"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack_library",
"nodeType": "YulIdentifier",
"src": "629:71:1"
},
"nodeType": "YulFunctionCall",
"src": "629:86:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "621:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_library_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "491:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "503:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "514:4:1",
"type": ""
}
],
"src": "393:329:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "787:40:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "798:22:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "814:5:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "808:5:1"
},
"nodeType": "YulFunctionCall",
"src": "808:12:1"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "798:6:1"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "770:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "780:6:1",
"type": ""
}
],
"src": "728:99:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "937:73:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "954:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "959:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "947:6:1"
},
"nodeType": "YulFunctionCall",
"src": "947:19:1"
},
"nodeType": "YulExpressionStatement",
"src": "947:19:1"
},
{
"nodeType": "YulAssignment",
"src": "975:29:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "994:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "999:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "990:3:1"
},
"nodeType": "YulFunctionCall",
"src": "990:14:1"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "975:11:1"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack_library",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "909:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "914:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "925:11:1",
"type": ""
}
],
"src": "833:177:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1065:258:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1075:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1084:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "1079:1:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1144:63:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "1169:3:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1174:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1165:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1165:11:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "1188:3:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1193:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1184:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1184:11:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1178:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1178:18:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1158:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1158:39:1"
},
"nodeType": "YulExpressionStatement",
"src": "1158:39:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1105:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1108:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1102:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1102:13:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "1116:19:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1118:15:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1127:1:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1130:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1123:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1123:10:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1118:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "1098:3:1",
"statements": []
},
"src": "1094:113:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1241:76:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "1291:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1296:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1287:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1287:16:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1305:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1280:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1280:27:1"
},
"nodeType": "YulExpressionStatement",
"src": "1280:27:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1222:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1225:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "1219:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1219:13:1"
},
"nodeType": "YulIf",
"src": "1216:2:1"
}
]
},
"name": "copy_memory_to_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "1047:3:1",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "1052:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1057:6:1",
"type": ""
}
],
"src": "1016:307:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1377:54:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1387:38:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1405:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1412:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1401:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1401:14:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1421:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "1417:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1417:7:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1397:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1397:28:1"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "1387:6:1"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1360:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "1370:6:1",
"type": ""
}
],
"src": "1329:102:1"
}
]
},
"contents": "{\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack_library(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack_library(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_library_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack_library(value0, tail)\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack_library(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063cfae32171461003a575b600080fd5b610042610058565b60405161004f91906100ce565b60405180910390f35b60606040518060400160405280600c81526020017f53616c75746174696f6e73210000000000000000000000000000000000000000815250905090565b60006100a0826100f0565b6100aa81856100fb565b93506100ba81856020860161010c565b6100c38161013f565b840191505092915050565b600060208201905081810360008301526100e88184610095565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561012a57808201518184015260208101905061010f565b83811115610139576000848401525b50505050565b6000601f19601f830116905091905056fea26469706673582212206851238e329bbd955768d6690287ec053d062b732f385925982b6af23196defb64736f6c63430008020033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x35 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xCFAE3217 EQ PUSH2 0x3A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x42 PUSH2 0x58 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4F SWAP2 SWAP1 PUSH2 0xCE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x53616C75746174696F6E73210000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA0 DUP3 PUSH2 0xF0 JUMP JUMPDEST PUSH2 0xAA DUP2 DUP6 PUSH2 0xFB JUMP JUMPDEST SWAP4 POP PUSH2 0xBA DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x10C JUMP JUMPDEST PUSH2 0xC3 DUP2 PUSH2 0x13F JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xE8 DUP2 DUP5 PUSH2 0x95 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x10F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH9 0x51238E329BBD955768 0xD6 PUSH10 0x287EC053D062B732F38 MSIZE 0x25 SWAP9 0x2B PUSH11 0xF23196DEFB64736F6C6343 STOP ADDMOD MUL STOP CALLER ",
"sourceMap": "56:114:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;78:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;115:13;140:21;;;;;;;;;;;;;;;;;;;78:90;:::o;7:380:1:-;;131:39;164:5;131:39;:::i;:::-;186:79;258:6;253:3;186:79;:::i;:::-;179:86;;274:52;319:6;314:3;307:4;300:5;296:16;274:52;:::i;:::-;351:29;373:6;351:29;:::i;:::-;346:3;342:39;335:46;;107:280;;;;;:::o;393:329::-;;552:2;541:9;537:18;529:26;;601:9;595:4;591:20;587:1;576:9;572:17;565:47;629:86;710:4;701:6;629:86;:::i;:::-;621:94;;519:203;;;;:::o;728:99::-;;814:5;808:12;798:22;;787:40;;;:::o;833:177::-;;959:6;954:3;947:19;999:4;994:3;990:14;975:29;;937:73;;;;:::o;1016:307::-;1084:1;1094:113;1108:6;1105:1;1102:13;1094:113;;;1193:1;1188:3;1184:11;1178:18;1174:1;1169:3;1165:11;1158:39;1130:2;1127:1;1123:10;1118:15;;1094:113;;;1225:6;1222:1;1219:13;1216:2;;;1305:1;1296:6;1291:3;1287:16;1280:27;1216:2;1065:258;;;;:::o;1329:102::-;;1421:2;1417:7;1412:2;1405:5;1401:14;1397:28;1387:38;;1377:54;;;:::o"
},
"methodIdentifiers": {
"greet()": "cfae3217"
}
}
},
"WithLib": {
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "initialValue",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "greet",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "value",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"evm": {
"bytecode": {
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:654:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "70:80:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "80:22:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "95:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "89:5:1"
},
"nodeType": "YulFunctionCall",
"src": "89:13:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "80:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "138:5:1"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "111:26:1"
},
"nodeType": "YulFunctionCall",
"src": "111:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "111:33:1"
}
]
},
"name": "abi_decode_t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "48:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "56:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "64:5:1",
"type": ""
}
],
"src": "7:143:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "233:207:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "279:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "288:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "291:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "281:6:1"
},
"nodeType": "YulFunctionCall",
"src": "281:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "281:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "254:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "263:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "250:3:1"
},
"nodeType": "YulFunctionCall",
"src": "250:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "275:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "246:3:1"
},
"nodeType": "YulFunctionCall",
"src": "246:32:1"
},
"nodeType": "YulIf",
"src": "243:2:1"
},
{
"nodeType": "YulBlock",
"src": "305:128:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "320:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "334:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "324:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "349:74:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "395:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "406:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "391:3:1"
},
"nodeType": "YulFunctionCall",
"src": "391:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "415:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256_fromMemory",
"nodeType": "YulIdentifier",
"src": "359:31:1"
},
"nodeType": "YulFunctionCall",
"src": "359:64:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "349:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "203:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "214:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "226:6:1",
"type": ""
}
],
"src": "156:284:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "491:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "501:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "512:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "501:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "473:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "483:7:1",
"type": ""
}
],
"src": "446:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "572:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "629:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "638:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "641:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "631:6:1"
},
"nodeType": "YulFunctionCall",
"src": "631:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "631:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "595:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "620:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "602:17:1"
},
"nodeType": "YulFunctionCall",
"src": "602:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "592:2:1"
},
"nodeType": "YulFunctionCall",
"src": "592:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "585:6:1"
},
"nodeType": "YulFunctionCall",
"src": "585:43:1"
},
"nodeType": "YulIf",
"src": "582:2:1"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "565:5:1",
"type": ""
}
],
"src": "529:122:1"
}
]
},
"contents": "{\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {
"contracts/WithLib.sol": {
"Greeter": [
{
"length": 20,
"start": 302
}
]
}
},
"object": "608060405234801561001057600080fd5b5060405161043638038061043683398181016040528101906100329190610054565b806000819055505061009e565b60008151905061004e81610087565b92915050565b60006020828403121561006657600080fd5b60006100748482850161003f565b91505092915050565b6000819050919050565b6100908161007d565b811461009b57600080fd5b50565b610389806100ad6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80633fa4f2451461003b578063cfae321714610059575b600080fd5b610043610077565b6040516100509190610218565b60405180910390f35b61006161007d565b60405161006e91906101f6565b60405180910390f35b60005481565b606073__$9f5e13f749de43a12f32dd3ec654a45066$__63cfae32176040518163ffffffff1660e01b815260040160006040518083038186803b1580156100c357600080fd5b505af41580156100d7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610100919061016d565b905090565b600061011861011384610258565b610233565b90508281526020810184848401111561013057600080fd5b61013b8482856102af565b509392505050565b600082601f83011261015457600080fd5b8151610164848260208601610105565b91505092915050565b60006020828403121561017f57600080fd5b600082015167ffffffffffffffff81111561019957600080fd5b6101a584828501610143565b91505092915050565b60006101b982610289565b6101c38185610294565b93506101d38185602086016102af565b6101dc81610342565b840191505092915050565b6101f0816102a5565b82525050565b6000602082019050818103600083015261021081846101ae565b905092915050565b600060208201905061022d60008301846101e7565b92915050565b600061023d61024e565b905061024982826102e2565b919050565b6000604051905090565b600067ffffffffffffffff82111561027357610272610313565b5b61027c82610342565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b60005b838110156102cd5780820151818401526020810190506102b2565b838111156102dc576000848401525b50505050565b6102eb82610342565b810181811067ffffffffffffffff8211171561030a57610309610313565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f830116905091905056fea2646970667358221220f5ed073ee96e76c1190ca084bedbcfb405415670c98180f59f7ab01d7a70628564736f6c63430008020033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x436 CODESIZE SUB DUP1 PUSH2 0x436 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x32 SWAP2 SWAP1 PUSH2 0x54 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP PUSH2 0x9E JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4E DUP2 PUSH2 0x87 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x74 DUP5 DUP3 DUP6 ADD PUSH2 0x3F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x90 DUP2 PUSH2 0x7D JUMP JUMPDEST DUP2 EQ PUSH2 0x9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x389 DUP1 PUSH2 0xAD 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 0x3FA4F245 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xCFAE3217 EQ PUSH2 0x59 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x77 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x218 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x61 PUSH2 0x7D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6E SWAP2 SWAP1 PUSH2 0x1F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH20 0x0 PUSH4 0xCFAE3217 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x100 SWAP2 SWAP1 PUSH2 0x16D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x118 PUSH2 0x113 DUP5 PUSH2 0x258 JUMP JUMPDEST PUSH2 0x233 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13B DUP5 DUP3 DUP6 PUSH2 0x2AF JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x154 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x164 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x105 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A5 DUP5 DUP3 DUP6 ADD PUSH2 0x143 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B9 DUP3 PUSH2 0x289 JUMP JUMPDEST PUSH2 0x1C3 DUP2 DUP6 PUSH2 0x294 JUMP JUMPDEST SWAP4 POP PUSH2 0x1D3 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2AF JUMP JUMPDEST PUSH2 0x1DC DUP2 PUSH2 0x342 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1F0 DUP2 PUSH2 0x2A5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x210 DUP2 DUP5 PUSH2 0x1AE JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x22D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1E7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x23D PUSH2 0x24E JUMP JUMPDEST SWAP1 POP PUSH2 0x249 DUP3 DUP3 PUSH2 0x2E2 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x273 JUMPI PUSH2 0x272 PUSH2 0x313 JUMP JUMPDEST JUMPDEST PUSH2 0x27C DUP3 PUSH2 0x342 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2CD JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2B2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2DC JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x2EB DUP3 PUSH2 0x342 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x30A JUMPI PUSH2 0x309 PUSH2 0x313 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE2 0xED SMOD RETURNDATACOPY 0xE9 PUSH15 0x76C1190CA084BEDBCFB405415670C9 DUP2 DUP1 CREATE2 SWAP16 PUSH27 0xB01D7A70628564736F6C6343000802003300000000000000000000 ",
"sourceMap": "172:219:0:-:0;;;221:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;273:12;265:5;:20;;;;221:71;172:219;;7:143:1;;95:6;89:13;80:22;;111:33;138:5;111:33;:::i;:::-;70:80;;;;:::o;156:284::-;;275:2;263:9;254:7;250:23;246:32;243:2;;;291:1;288;281:12;243:2;334:1;359:64;415:7;406:6;395:9;391:22;359:64;:::i;:::-;349:74;;305:128;233:207;;;;:::o;446:77::-;;512:5;501:16;;491:32;;;:::o;529:122::-;602:24;620:5;602:24;:::i;:::-;595:5;592:35;582:2;;641:1;638;631:12;582:2;572:79;:::o;172:219:0:-;;;;;;;"
},
"deployedBytecode": {
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:3896:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "102:259:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "112:75:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "179:6:1"
}
],
"functionName": {
"name": "array_allocation_size_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "137:41:1"
},
"nodeType": "YulFunctionCall",
"src": "137:49:1"
}
],
"functionName": {
"name": "allocate_memory",
"nodeType": "YulIdentifier",
"src": "121:15:1"
},
"nodeType": "YulFunctionCall",
"src": "121:66:1"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "112:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "203:5:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "210:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "196:6:1"
},
"nodeType": "YulFunctionCall",
"src": "196:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "196:21:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "226:27:1",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "241:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "248:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "237:3:1"
},
"nodeType": "YulFunctionCall",
"src": "237:16:1"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "230:3:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "291:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "300:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "303:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "293:6:1"
},
"nodeType": "YulFunctionCall",
"src": "293:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "293:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "272:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "277:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "268:3:1"
},
"nodeType": "YulFunctionCall",
"src": "268:16:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "286:3:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "265:2:1"
},
"nodeType": "YulFunctionCall",
"src": "265:25:1"
},
"nodeType": "YulIf",
"src": "262:2:1"
},
{
"expression": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "338:3:1"
},
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "343:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "348:6:1"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "316:21:1"
},
"nodeType": "YulFunctionCall",
"src": "316:39:1"
},
"nodeType": "YulExpressionStatement",
"src": "316:39:1"
}
]
},
"name": "abi_decode_available_length_t_string_memory_ptr_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "75:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "80:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "88:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "96:5:1",
"type": ""
}
],
"src": "7:354:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "454:215:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "503:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "512:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "515:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "505:6:1"
},
"nodeType": "YulFunctionCall",
"src": "505:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "505:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "482:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "490:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "478:3:1"
},
"nodeType": "YulFunctionCall",
"src": "478:17:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "497:3:1"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "474:3:1"
},
"nodeType": "YulFunctionCall",
"src": "474:27:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "467:6:1"
},
"nodeType": "YulFunctionCall",
"src": "467:35:1"
},
"nodeType": "YulIf",
"src": "464:2:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "528:27:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "548:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "542:5:1"
},
"nodeType": "YulFunctionCall",
"src": "542:13:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "532:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "564:99:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "636:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "644:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "632:3:1"
},
"nodeType": "YulFunctionCall",
"src": "632:17:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "651:6:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "659:3:1"
}
],
"functionName": {
"name": "abi_decode_available_length_t_string_memory_ptr_fromMemory",
"nodeType": "YulIdentifier",
"src": "573:58:1"
},
"nodeType": "YulFunctionCall",
"src": "573:90:1"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "564:5:1"
}
]
}
]
},
"name": "abi_decode_t_string_memory_ptr_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "432:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "440:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "448:5:1",
"type": ""
}
],
"src": "381:288:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "762:303:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "808:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "817:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "820:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "810:6:1"
},
"nodeType": "YulFunctionCall",
"src": "810:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "810:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "783:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "792:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "779:3:1"
},
"nodeType": "YulFunctionCall",
"src": "779:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "804:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "775:3:1"
},
"nodeType": "YulFunctionCall",
"src": "775:32:1"
},
"nodeType": "YulIf",
"src": "772:2:1"
},
{
"nodeType": "YulBlock",
"src": "834:224:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "849:38:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "873:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "884:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "869:3:1"
},
"nodeType": "YulFunctionCall",
"src": "869:17:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "863:5:1"
},
"nodeType": "YulFunctionCall",
"src": "863:24:1"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "853:6:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "934:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "943:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "946:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "936:6:1"
},
"nodeType": "YulFunctionCall",
"src": "936:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "936:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "906:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "914:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "903:2:1"
},
"nodeType": "YulFunctionCall",
"src": "903:30:1"
},
"nodeType": "YulIf",
"src": "900:2:1"
},
{
"nodeType": "YulAssignment",
"src": "964:84:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1020:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1031:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1016:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1016:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1040:7:1"
}
],
"functionName": {
"name": "abi_decode_t_string_memory_ptr_fromMemory",
"nodeType": "YulIdentifier",
"src": "974:41:1"
},
"nodeType": "YulFunctionCall",
"src": "974:74:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "964:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_string_memory_ptr_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "732:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "743:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "755:6:1",
"type": ""
}
],
"src": "675:390:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1163:272:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1173:53:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1220:5:1"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "1187:32:1"
},
"nodeType": "YulFunctionCall",
"src": "1187:39:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1177:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1235:78:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1301:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1306:6:1"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "1242:58:1"
},
"nodeType": "YulFunctionCall",
"src": "1242:71:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1235:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1348:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1355:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1344:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1344:16:1"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1362:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1367:6:1"
}
],
"functionName": {
"name": "copy_memory_to_memory",
"nodeType": "YulIdentifier",
"src": "1322:21:1"
},
"nodeType": "YulFunctionCall",
"src": "1322:52:1"
},
"nodeType": "YulExpressionStatement",
"src": "1322:52:1"
},
{
"nodeType": "YulAssignment",
"src": "1383:46:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1394:3:1"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1421:6:1"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "1399:21:1"
},
"nodeType": "YulFunctionCall",
"src": "1399:29:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1390:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1390:39:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "1383:3:1"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1144:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1151:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "1159:3:1",
"type": ""
}
],
"src": "1071:364:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1506:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1523:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1546:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "1528:17:1"
},
"nodeType": "YulFunctionCall",
"src": "1528:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1516:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1516:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "1516:37:1"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1494:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1501:3:1",
"type": ""
}
],
"src": "1441:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1683:195:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1693:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1705:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1716:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1701:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1701:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1693:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1740:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1751:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1736:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1736:17:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1759:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1765:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1755:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1755:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1729:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1729:47:1"
},
"nodeType": "YulExpressionStatement",
"src": "1729:47:1"
},
{
"nodeType": "YulAssignment",
"src": "1785:86:1",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1857:6:1"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1866:4:1"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "1793:63:1"
},
"nodeType": "YulFunctionCall",
"src": "1793:78:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1785:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1655:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1667:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1678:4:1",
"type": ""
}
],
"src": "1565:313:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1982:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1992:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2004:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2015:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2000:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2000:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1992:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2072:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2085:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2096:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2081:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2081:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "2028:43:1"
},
"nodeType": "YulFunctionCall",
"src": "2028:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "2028:71:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1954:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1966:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1977:4:1",
"type": ""
}
],
"src": "1884:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2153:88:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2163:30:1",
"value": {
"arguments": [],
"functionName": {
"name": "allocate_unbounded",
"nodeType": "YulIdentifier",
"src": "2173:18:1"
},
"nodeType": "YulFunctionCall",
"src": "2173:20:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2163:6:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2222:6:1"
},
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "2230:4:1"
}
],
"functionName": {
"name": "finalize_allocation",
"nodeType": "YulIdentifier",
"src": "2202:19:1"
},
"nodeType": "YulFunctionCall",
"src": "2202:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "2202:33:1"
}
]
},
"name": "allocate_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "2137:4:1",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "2146:6:1",
"type": ""
}
],
"src": "2112:129:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2287:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2297:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2313:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2307:5:1"
},
"nodeType": "YulFunctionCall",
"src": "2307:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "2297:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "2280:6:1",
"type": ""
}
],
"src": "2247:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2395:241:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "2500:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "2502:16:1"
},
"nodeType": "YulFunctionCall",
"src": "2502:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "2502:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2472:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2480:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2469:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2469:30:1"
},
"nodeType": "YulIf",
"src": "2466:2:1"
},
{
"nodeType": "YulAssignment",
"src": "2532:37:1",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2562:6:1"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "2540:21:1"
},
"nodeType": "YulFunctionCall",
"src": "2540:29:1"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "2532:4:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "2606:23:1",
"value": {
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "2618:4:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2624:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2614:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2614:15:1"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "2606:4:1"
}
]
}
]
},
"name": "array_allocation_size_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2379:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "2390:4:1",
"type": ""
}
],
"src": "2328:308:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2701:40:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2712:22:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2728:5:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2722:5:1"
},
"nodeType": "YulFunctionCall",
"src": "2722:12:1"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2712:6:1"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2684:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2694:6:1",
"type": ""
}
],
"src": "2642:99:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2843:73:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2860:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2865:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2853:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2853:19:1"
},
"nodeType": "YulExpressionStatement",
"src": "2853:19:1"
},
{
"nodeType": "YulAssignment",
"src": "2881:29:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2900:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2905:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2896:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2896:14:1"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "2881:11:1"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2815:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2820:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "2831:11:1",
"type": ""
}
],
"src": "2747:169:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2967:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2977:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "2988:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "2977:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2949:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "2959:7:1",
"type": ""
}
],
"src": "2922:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3054:258:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3064:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "3073:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "3068:1:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3133:63:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "3158:3:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "3163:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3154:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3154:11:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "3177:3:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "3182:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3173:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3173:11:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "3167:5:1"
},
"nodeType": "YulFunctionCall",
"src": "3167:18:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3147:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3147:39:1"
},
"nodeType": "YulExpressionStatement",
"src": "3147:39:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "3094:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3097:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "3091:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3091:13:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "3105:19:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3107:15:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "3116:1:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3119:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3112:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3112:10:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "3107:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "3087:3:1",
"statements": []
},
"src": "3083:113:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3230:76:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "3280:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3285:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3276:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3276:16:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3294:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3269:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3269:27:1"
},
"nodeType": "YulExpressionStatement",
"src": "3269:27:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "3211:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3214:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3208:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3208:13:1"
},
"nodeType": "YulIf",
"src": "3205:2:1"
}
]
},
"name": "copy_memory_to_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "3036:3:1",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "3041:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "3046:6:1",
"type": ""
}
],
"src": "3005:307:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3361:238:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3371:58:1",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "3393:6:1"
},
{
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "3423:4:1"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "3401:21:1"
},
"nodeType": "YulFunctionCall",
"src": "3401:27:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3389:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3389:40:1"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "3375:10:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3540:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "3542:16:1"
},
"nodeType": "YulFunctionCall",
"src": "3542:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "3542:18:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "3483:10:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3495:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3480:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3480:34:1"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "3519:10:1"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "3531:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "3516:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3516:22:1"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "3477:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3477:62:1"
},
"nodeType": "YulIf",
"src": "3474:2:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3578:2:1",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "3582:10:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3571:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3571:22:1"
},
"nodeType": "YulExpressionStatement",
"src": "3571:22:1"
}
]
},
"name": "finalize_allocation",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "3347:6:1",
"type": ""
},
{
"name": "size",
"nodeType": "YulTypedName",
"src": "3355:4:1",
"type": ""
}
],
"src": "3318:281:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3633:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3650:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3653:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3643:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3643:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "3643:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3747:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3750:4:1",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3740:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3740:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "3740:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3771:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3774:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3764:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3764:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "3764:15:1"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "3605:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3839:54:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3849:38:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "3867:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3874:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3863:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3863:14:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3883:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "3879:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3879:7:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "3859:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3859:28:1"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "3849:6:1"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "3822:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "3832:6:1",
"type": ""
}
],
"src": "3791:102:1"
}
]
},
"contents": "{\n\n function abi_decode_available_length_t_string_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert(0, 0) }\n copy_memory_to_memory(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let length := mload(offset)\n array := abi_decode_available_length_t_string_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n\n value0 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function copy_memory_to_memory(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {
"contracts/WithLib.sol": {
"Greeter": [
{
"length": 20,
"start": 129
}
]
}
},
"object": "608060405234801561001057600080fd5b50600436106100365760003560e01c80633fa4f2451461003b578063cfae321714610059575b600080fd5b610043610077565b6040516100509190610218565b60405180910390f35b61006161007d565b60405161006e91906101f6565b60405180910390f35b60005481565b606073__$9f5e13f749de43a12f32dd3ec654a45066$__63cfae32176040518163ffffffff1660e01b815260040160006040518083038186803b1580156100c357600080fd5b505af41580156100d7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610100919061016d565b905090565b600061011861011384610258565b610233565b90508281526020810184848401111561013057600080fd5b61013b8482856102af565b509392505050565b600082601f83011261015457600080fd5b8151610164848260208601610105565b91505092915050565b60006020828403121561017f57600080fd5b600082015167ffffffffffffffff81111561019957600080fd5b6101a584828501610143565b91505092915050565b60006101b982610289565b6101c38185610294565b93506101d38185602086016102af565b6101dc81610342565b840191505092915050565b6101f0816102a5565b82525050565b6000602082019050818103600083015261021081846101ae565b905092915050565b600060208201905061022d60008301846101e7565b92915050565b600061023d61024e565b905061024982826102e2565b919050565b6000604051905090565b600067ffffffffffffffff82111561027357610272610313565b5b61027c82610342565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050919050565b60005b838110156102cd5780820151818401526020810190506102b2565b838111156102dc576000848401525b50505050565b6102eb82610342565b810181811067ffffffffffffffff8211171561030a57610309610313565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f830116905091905056fea2646970667358221220f5ed073ee96e76c1190ca084bedbcfb405415670c98180f59f7ab01d7a70628564736f6c63430008020033",
"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 0x3FA4F245 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xCFAE3217 EQ PUSH2 0x59 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x77 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x218 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x61 PUSH2 0x7D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6E SWAP2 SWAP1 PUSH2 0x1F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH20 0x0 PUSH4 0xCFAE3217 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x100 SWAP2 SWAP1 PUSH2 0x16D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x118 PUSH2 0x113 DUP5 PUSH2 0x258 JUMP JUMPDEST PUSH2 0x233 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x13B DUP5 DUP3 DUP6 PUSH2 0x2AF JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x154 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x164 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x105 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A5 DUP5 DUP3 DUP6 ADD PUSH2 0x143 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B9 DUP3 PUSH2 0x289 JUMP JUMPDEST PUSH2 0x1C3 DUP2 DUP6 PUSH2 0x294 JUMP JUMPDEST SWAP4 POP PUSH2 0x1D3 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2AF JUMP JUMPDEST PUSH2 0x1DC DUP2 PUSH2 0x342 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1F0 DUP2 PUSH2 0x2A5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x210 DUP2 DUP5 PUSH2 0x1AE JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x22D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1E7 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x23D PUSH2 0x24E JUMP JUMPDEST SWAP1 POP PUSH2 0x249 DUP3 DUP3 PUSH2 0x2E2 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x273 JUMPI PUSH2 0x272 PUSH2 0x313 JUMP JUMPDEST JUMPDEST PUSH2 0x27C DUP3 PUSH2 0x342 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2CD JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2B2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2DC JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x2EB DUP3 PUSH2 0x342 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x30A JUMPI PUSH2 0x309 PUSH2 0x313 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE2 0xED SMOD RETURNDATACOPY 0xE9 PUSH15 0x76C1190CA084BEDBCFB405415670C9 DUP2 DUP1 CREATE2 SWAP16 PUSH27 0xB01D7A70628564736F6C6343000802003300000000000000000000 ",
"sourceMap": "172:219:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;195:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;298:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;195:20;;;;:::o;298:91::-;335:13;367:7;:13;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;360:22;;298:91;:::o;7:354:1:-;;121:66;137:49;179:6;137:49;:::i;:::-;121:66;:::i;:::-;112:75;;210:6;203:5;196:21;248:4;241:5;237:16;286:3;277:6;272:3;268:16;265:25;262:2;;;303:1;300;293:12;262:2;316:39;348:6;343:3;338;316:39;:::i;:::-;102:259;;;;;;:::o;381:288::-;;497:3;490:4;482:6;478:17;474:27;464:2;;515:1;512;505:12;464:2;548:6;542:13;573:90;659:3;651:6;644:4;636:6;632:17;573:90;:::i;:::-;564:99;;454:215;;;;;:::o;675:390::-;;804:2;792:9;783:7;779:23;775:32;772:2;;;820:1;817;810:12;772:2;884:1;873:9;869:17;863:24;914:18;906:6;903:30;900:2;;;946:1;943;936:12;900:2;974:74;1040:7;1031:6;1020:9;1016:22;974:74;:::i;:::-;964:84;;834:224;762:303;;;;:::o;1071:364::-;;1187:39;1220:5;1187:39;:::i;:::-;1242:71;1306:6;1301:3;1242:71;:::i;:::-;1235:78;;1322:52;1367:6;1362:3;1355:4;1348:5;1344:16;1322:52;:::i;:::-;1399:29;1421:6;1399:29;:::i;:::-;1394:3;1390:39;1383:46;;1163:272;;;;;:::o;1441:118::-;1528:24;1546:5;1528:24;:::i;:::-;1523:3;1516:37;1506:53;;:::o;1565:313::-;;1716:2;1705:9;1701:18;1693:26;;1765:9;1759:4;1755:20;1751:1;1740:9;1736:17;1729:47;1793:78;1866:4;1857:6;1793:78;:::i;:::-;1785:86;;1683:195;;;;:::o;1884:222::-;;2015:2;2004:9;2000:18;1992:26;;2028:71;2096:1;2085:9;2081:17;2072:6;2028:71;:::i;:::-;1982:124;;;;:::o;2112:129::-;;2173:20;;:::i;:::-;2163:30;;2202:33;2230:4;2222:6;2202:33;:::i;:::-;2153:88;;;:::o;2247:75::-;;2313:2;2307:9;2297:19;;2287:35;:::o;2328:308::-;;2480:18;2472:6;2469:30;2466:2;;;2502:18;;:::i;:::-;2466:2;2540:29;2562:6;2540:29;:::i;:::-;2532:37;;2624:4;2618;2614:15;2606:23;;2395:241;;;:::o;2642:99::-;;2728:5;2722:12;2712:22;;2701:40;;;:::o;2747:169::-;;2865:6;2860:3;2853:19;2905:4;2900:3;2896:14;2881:29;;2843:73;;;;:::o;2922:77::-;;2988:5;2977:16;;2967:32;;;:::o;3005:307::-;3073:1;3083:113;3097:6;3094:1;3091:13;3083:113;;;3182:1;3177:3;3173:11;3167:18;3163:1;3158:3;3154:11;3147:39;3119:2;3116:1;3112:10;3107:15;;3083:113;;;3214:6;3211:1;3208:13;3205:2;;;3294:1;3285:6;3280:3;3276:16;3269:27;3205:2;3054:258;;;;:::o;3318:281::-;3401:27;3423:4;3401:27;:::i;:::-;3393:6;3389:40;3531:6;3519:10;3516:22;3495:18;3483:10;3480:34;3477:62;3474:2;;;3542:18;;:::i;:::-;3474:2;3582:10;3578:2;3571:22;3361:238;;;:::o;3605:180::-;3653:77;3650:1;3643:88;3750:4;3747:1;3740:15;3774:4;3771:1;3764:15;3791:102;;3883:2;3879:7;3874:2;3867:5;3863:14;3859:28;3849:38;;3839:54;;;:::o"
},
"methodIdentifiers": {
"greet()": "cfae3217",
"value()": "3fa4f245"
}
}
}
}
},
"sources": {
"contracts/WithLib.sol": {
"ast": {
"absolutePath": "contracts/WithLib.sol",
"exportedSymbols": {
"Greeter": [
10
],
"WithLib": [
33
]
},
"id": 34,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
"^",
"0.8",
".0"
],
"nodeType": "PragmaDirective",
"src": "31:23:0"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "library",
"fullyImplemented": true,
"id": 10,
"linearizedBaseContracts": [
10
],
"name": "Greeter",
"nameLocation": "64:7:0",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 8,
"nodeType": "Block",
"src": "130:38:0",
"statements": [
{
"expression": {
"hexValue": "53616c75746174696f6e7321",
"id": 6,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "147:14:0",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_b5fd4ea9134ac2c5378580801a8af9e0b889898a5c53bfb92d72651420655e62",
"typeString": "literal_string \"Salutations!\""
},
"value": "Salutations!"
},
"functionReturnParameters": 5,
"id": 7,
"nodeType": "Return",
"src": "140:21:0"
}
]
},
"functionSelector": "cfae3217",
"id": 9,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "greet",
"nameLocation": "87:5:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 2,
"nodeType": "ParameterList",
"parameters": [],
"src": "92:2:0"
},
"returnParameters": {
"id": 5,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 9,
"src": "115:13:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 3,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "115:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "114:15:0"
},
"scope": 10,
"src": "78:90:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "public"
}
],
"scope": 34,
"src": "56:114:0"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"fullyImplemented": true,
"id": 33,
"linearizedBaseContracts": [
33
],
"name": "WithLib",
"nameLocation": "181:7:0",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": false,
"functionSelector": "3fa4f245",
"id": 12,
"mutability": "mutable",
"name": "value",
"nameLocation": "210:5:0",
"nodeType": "VariableDeclaration",
"scope": 33,
"src": "195:20:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 11,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "195:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "public"
},
{
"body": {
"id": 21,
"nodeType": "Block",
"src": "255:37:0",
"statements": [
{
"expression": {
"id": 19,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 17,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12,
"src": "265:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 18,
"name": "initialValue",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14,
"src": "273:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "265:20:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 20,
"nodeType": "ExpressionStatement",
"src": "265:20:0"
}
]
},
"id": 22,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 15,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 14,
"mutability": "mutable",
"name": "initialValue",
"nameLocation": "241:12:0",
"nodeType": "VariableDeclaration",
"scope": 22,
"src": "233:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 13,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "233:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "232:22:0"
},
"returnParameters": {
"id": 16,
"nodeType": "ParameterList",
"parameters": [],
"src": "255:0:0"
},
"scope": 33,
"src": "221:71:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 31,
"nodeType": "Block",
"src": "350:39:0",
"statements": [
{
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 27,
"name": "Greeter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10,
"src": "367:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Greeter_$10_$",
"typeString": "type(library Greeter)"
}
},
"id": 28,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "greet",
"nodeType": "MemberAccess",
"referencedDeclaration": 9,
"src": "367:13:0",
"typeDescriptions": {
"typeIdentifier": "t_function_delegatecall_pure$__$returns$_t_string_memory_ptr_$",
"typeString": "function () pure returns (string memory)"
}
},
"id": 29,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "367:15:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"functionReturnParameters": 26,
"id": 30,
"nodeType": "Return",
"src": "360:22:0"
}
]
},
"functionSelector": "cfae3217",
"id": 32,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "greet",
"nameLocation": "307:5:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 23,
"nodeType": "ParameterList",
"parameters": [],
"src": "312:2:0"
},
"returnParameters": {
"id": 26,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 25,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 32,
"src": "335:13:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 24,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "335:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "334:15:0"
},
"scope": 33,
"src": "298:91:0",
"stateMutability": "pure",
"virtual": false,
"visibility": "public"
}
],
"scope": 34,
"src": "172:219:0"
}
],
"src": "31:361:0"
},
"id": 0
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment