@aave/governance-crosschain-bridges
Version:
Contracts of Aave Governance Crosschain Bridges
4,146 lines • 216 kB
JSON
{
"id": "9bef09508358b79d57249e1658a48aaf",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.10",
"solcLongVersion": "0.8.10+commit.fc410830",
"input": {
"language": "Solidity",
"sources": {
"contracts/dependencies/polygon/fxportal/FxRoot.sol": {
"content": "/**\n *Submitted for verification at Etherscan.io on 2021-01-17\n */\n\n// SPDX-License-Identifier: MIT\npragma solidity ^0.8.10;\n\ninterface IStateSender {\n function syncState(address receiver, bytes calldata data) external;\n}\n\ninterface IFxStateSender {\n function sendMessageToChild(address _receiver, bytes calldata _data) external;\n}\n\n/**\n * @title FxRoot root contract for fx-portal\n */\ncontract FxRoot is IFxStateSender {\n IStateSender public stateSender;\n address public fxChild;\n\n constructor(address _stateSender) {\n stateSender = IStateSender(_stateSender);\n }\n\n function setFxChild(address _fxChild) public {\n require(fxChild == address(0x0));\n fxChild = _fxChild;\n }\n\n function sendMessageToChild(address _receiver, bytes calldata _data) public override {\n bytes memory data = abi.encode(msg.sender, _receiver, _data);\n stateSender.syncState(fxChild, data);\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/dependencies/polygon/fxportal/FxRoot.sol": {
"FxRoot": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_stateSender",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "fxChild",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_receiver",
"type": "address"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "sendMessageToChild",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_fxChild",
"type": "address"
}
],
"name": "setFxChild",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "stateSender",
"outputs": [
{
"internalType": "contract IStateSender",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"title": "FxRoot root contract for fx-portal",
"version": 1
},
"evm": {
"bytecode": {
"functionDebugData": {
"@_37": {
"entryPoint": null,
"id": 37,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_tuple_t_address_fromMemory": {
"entryPoint": 84,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:306:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "95:209:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "141:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "150:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "153:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "143:6:1"
},
"nodeType": "YulFunctionCall",
"src": "143:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "143:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "116:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "125:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "112:3:1"
},
"nodeType": "YulFunctionCall",
"src": "112:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "137:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "108:3:1"
},
"nodeType": "YulFunctionCall",
"src": "108:32:1"
},
"nodeType": "YulIf",
"src": "105:52:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "166:29:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "185:9:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "179:5:1"
},
"nodeType": "YulFunctionCall",
"src": "179:16:1"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "170:5:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "258:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "267:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "270:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "260:6:1"
},
"nodeType": "YulFunctionCall",
"src": "260:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "260:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "217:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "228:5:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "243:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "248:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "239:3:1"
},
"nodeType": "YulFunctionCall",
"src": "239:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "252:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "235:3:1"
},
"nodeType": "YulFunctionCall",
"src": "235:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "224:3:1"
},
"nodeType": "YulFunctionCall",
"src": "224:31:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "214:2:1"
},
"nodeType": "YulFunctionCall",
"src": "214:42:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "207:6:1"
},
"nodeType": "YulFunctionCall",
"src": "207:50:1"
},
"nodeType": "YulIf",
"src": "204:70:1"
},
{
"nodeType": "YulAssignment",
"src": "283:15:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "293:5:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "283:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_address_fromMemory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "61:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "72:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "84:6:1",
"type": ""
}
],
"src": "14:290:1"
}
]
},
"contents": "{\n { }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506040516103c53803806103c583398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610332806100936000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063450d11f014610051578063b472047714610080578063b86cfdcf14610095578063cb10f94c146100a8575b600080fd5b600154610064906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b61009361008e3660046101a6565b6100bb565b005b6100936100a3366004610229565b610152565b600054610064906001600160a01b031681565b6000338484846040516020016100d4949392919061024b565b60408051601f19818403018152908290526000546001546316f1983160e01b84529193506001600160a01b03908116926316f198319261011a9216908590600401610297565b600060405180830381600087803b15801561013457600080fd5b505af1158015610148573d6000803e3d6000fd5b5050505050505050565b6001546001600160a01b03161561016857600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b03811681146101a157600080fd5b919050565b6000806000604084860312156101bb57600080fd5b6101c48461018a565b9250602084013567ffffffffffffffff808211156101e157600080fd5b818601915086601f8301126101f557600080fd5b81358181111561020457600080fd5b87602082850101111561021657600080fd5b6020830194508093505050509250925092565b60006020828403121561023b57600080fd5b6102448261018a565b9392505050565b6001600160a01b0385811682528416602082015260606040820181905281018290526000828460808401376000608084840101526080601f19601f850116830101905095945050505050565b60018060a01b038316815260006020604081840152835180604085015260005b818110156102d3578581018301518582016060015282016102b7565b818111156102e5576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212207bca6c92362c4b197b5887186ebbfdd20259e219566330586ce52259a886726964736f6c634300080a0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x3C5 CODESIZE SUB DUP1 PUSH2 0x3C5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x54 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x84 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x332 DUP1 PUSH2 0x93 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 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x450D11F0 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0xB4720477 EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0xB86CFDCF EQ PUSH2 0x95 JUMPI DUP1 PUSH4 0xCB10F94C EQ PUSH2 0xA8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x64 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x93 PUSH2 0x8E CALLDATASIZE PUSH1 0x4 PUSH2 0x1A6 JUMP JUMPDEST PUSH2 0xBB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x93 PUSH2 0xA3 CALLDATASIZE PUSH1 0x4 PUSH2 0x229 JUMP JUMPDEST PUSH2 0x152 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x64 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 CALLER DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD4 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x24B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH4 0x16F19831 PUSH1 0xE0 SHL DUP5 MSTORE SWAP2 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 PUSH4 0x16F19831 SWAP3 PUSH2 0x11A SWAP3 AND SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x297 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x148 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C4 DUP5 PUSH2 0x18A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x244 DUP3 PUSH2 0x18A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 DUP3 DUP5 PUSH1 0x80 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x80 DUP5 DUP5 ADD ADD MSTORE PUSH1 0x80 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x40 DUP2 DUP5 ADD MSTORE DUP4 MLOAD DUP1 PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2D3 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x60 ADD MSTORE DUP3 ADD PUSH2 0x2B7 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 PUSH1 0x60 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x60 ADD SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH28 0xCA6C92362C4B197B5887186EBBFDD20259E219566330586CE52259A8 DUP7 PUSH19 0x6964736F6C634300080A003300000000000000 ",
"sourceMap": "388:505:0:-:0;;;488:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;528:11;:40;;-1:-1:-1;;;;;;528:40:0;-1:-1:-1;;;;;528:40:0;;;;;;;;;;388:505;;14:290:1;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:1;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:1:o;:::-;388:505:0;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@fxChild_25": {
"entryPoint": null,
"id": 25,
"parameterSlots": 0,
"returnSlots": 0
},
"@sendMessageToChild_82": {
"entryPoint": 187,
"id": 82,
"parameterSlots": 3,
"returnSlots": 0
},
"@setFxChild_56": {
"entryPoint": 338,
"id": 56,
"parameterSlots": 1,
"returnSlots": 0
},
"@stateSender_23": {
"entryPoint": null,
"id": 23,
"parameterSlots": 0,
"returnSlots": 0
},
"abi_decode_address": {
"entryPoint": 394,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"abi_decode_tuple_t_address": {
"entryPoint": 553,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_addresst_bytes_calldata_ptr": {
"entryPoint": 422,
"id": null,
"parameterSlots": 2,
"returnSlots": 3
},
"abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_address_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed": {
"entryPoint": 587,
"id": null,
"parameterSlots": 5,
"returnSlots": 1
},
"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed": {
"entryPoint": 663,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_encode_tuple_t_contract$_IStateSender_$9__to_t_address__fromStack_reversed": {
"entryPoint": null,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:2775:1",
"statements": [
{
"nodeType": "YulBlock",
"src": "6:3:1",
"statements": []
},
{
"body": {
"nodeType": "YulBlock",
"src": "115:102:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "125:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "137:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "148:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "133:3:1"
},
"nodeType": "YulFunctionCall",
"src": "133:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "125:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "167:9:1"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "182:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "198:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "203:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "194:3:1"
},
"nodeType": "YulFunctionCall",
"src": "194:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "207:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "190:3:1"
},
"nodeType": "YulFunctionCall",
"src": "190:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "178:3:1"
},
"nodeType": "YulFunctionCall",
"src": "178:32:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "160:6:1"
},
"nodeType": "YulFunctionCall",
"src": "160:51:1"
},
"nodeType": "YulExpressionStatement",
"src": "160:51:1"
}
]
},
"name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "84:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "95:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "106:4:1",
"type": ""
}
],
"src": "14:203:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "271:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "281:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "303:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "290:12:1"
},
"nodeType": "YulFunctionCall",
"src": "290:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "281:5:1"
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "373:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "382:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "385:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "375:6:1"
},
"nodeType": "YulFunctionCall",
"src": "375:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "375:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "332:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "343:5:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "358:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "363:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "354:3:1"
},
"nodeType": "YulFunctionCall",
"src": "354:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "367:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "350:3:1"
},
"nodeType": "YulFunctionCall",
"src": "350:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "339:3:1"
},
"nodeType": "YulFunctionCall",
"src": "339:31:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "329:2:1"
},
"nodeType": "YulFunctionCall",
"src": "329:42:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "322:6:1"
},
"nodeType": "YulFunctionCall",
"src": "322:50:1"
},
"nodeType": "YulIf",
"src": "319:70:1"
}
]
},
"name": "abi_decode_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "250:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "261:5:1",
"type": ""
}
],
"src": "222:173:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "506:559:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "552:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "561:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "564:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "554:6:1"
},
"nodeType": "YulFunctionCall",
"src": "554:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "554:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "527:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "536:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "523:3:1"
},
"nodeType": "YulFunctionCall",
"src": "523:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "548:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "519:3:1"
},
"nodeType": "YulFunctionCall",
"src": "519:32:1"
},
"nodeType": "YulIf",
"src": "516:52:1"
},
{
"nodeType": "YulAssignment",
"src": "577:39:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "606:9:1"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "587:18:1"
},
"nodeType": "YulFunctionCall",
"src": "587:29:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "577:6:1"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "625:46:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "656:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "667:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "652:3:1"
},
"nodeType": "YulFunctionCall",
"src": "652:18:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "639:12:1"
},
"nodeType": "YulFunctionCall",
"src": "639:32:1"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "629:6:1",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "680:28:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "690:18:1",
"type": "",
"value": "0xffffffffffffffff"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "684:2:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "735:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "744:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "747:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "737:6:1"
},
"nodeType": "YulFunctionCall",
"src": "737:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "737:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "723:6:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "731:2:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "720:2:1"
},
"nodeType": "YulFunctionCall",
"src": "720:14:1"
},
"nodeType": "YulIf",
"src": "717:34:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "760:32:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "774:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "785:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "770:3:1"
},
"nodeType": "YulFunctionCall",
"src": "770:22:1"
},
"variables": [
{
"name": "_2",
"nodeType": "YulTypedName",
"src": "764:2:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "840:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "849:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "852:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "842:6:1"
},
"nodeType": "YulFunctionCall",
"src": "842:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "842:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "819:2:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "823:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "815:3:1"
},
"nodeType": "YulFunctionCall",
"src": "815:13:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "830:7:1"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "811:3:1"
},
"nodeType": "YulFunctionCall",
"src": "811:27:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "804:6:1"
},
"nodeType": "YulFunctionCall",
"src": "804:35:1"
},
"nodeType": "YulIf",
"src": "801:55:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "865:30:1",
"value": {
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "892:2:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "879:12:1"
},
"nodeType": "YulFunctionCall",
"src": "879:16:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "869:6:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "922:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "931:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "934:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "924:6:1"
},
"nodeType": "YulFunctionCall",
"src": "924:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "924:12:1"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "910:6:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "918:2:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "907:2:1"
},
"nodeType": "YulFunctionCall",
"src": "907:14:1"
},
"nodeType": "YulIf",
"src": "904:34:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "988:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "997:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1000:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "990:6:1"
},
"nodeType": "YulFunctionCall",
"src": "990:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "990:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "961:2:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "965:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "957:3:1"
},
"nodeType": "YulFunctionCall",
"src": "957:15:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "974:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "953:3:1"
},
"nodeType": "YulFunctionCall",
"src": "953:24:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "979:7:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "950:2:1"
},
"nodeType": "YulFunctionCall",
"src": "950:37:1"
},
"nodeType": "YulIf",
"src": "947:57:1"
},
{
"nodeType": "YulAssignment",
"src": "1013:21:1",
"value": {
"arguments": [
{
"name": "_2",
"nodeType": "YulIdentifier",
"src": "1027:2:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1031:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1023:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1023:11:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1013:6:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "1043:16:1",
"value": {
"name": "length",
"nodeType": "YulIdentifier",
"src": "1053:6:1"
},
"variableNames": [
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "1043:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_addresst_bytes_calldata_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "456:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "467:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "479:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "487:6:1",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "495:6:1",
"type": ""
}
],
"src": "400:665:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1140:116:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1186:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1195:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1198:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "1188:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1188:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "1188:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1161:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1170:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1157:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1157:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1182:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1153:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1153:32:1"
},
"nodeType": "YulIf",
"src": "1150:52:1"
},
{
"nodeType": "YulAssignment",
"src": "1211:39:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1240:9:1"
}
],
"functionName": {
"name": "abi_decode_address",
"nodeType": "YulIdentifier",
"src": "1221:18:1"
},
"nodeType": "YulFunctionCall",
"src": "1221:29:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1211:6:1"
}
]
}
]
},
"name": "abi_decode_tuple_t_address",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1106:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1117:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1129:6:1",
"type": ""
}
],
"src": "1070:186:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1380:102:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1390:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1402:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1413:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1398:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1398:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "1390:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1432:9:1"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1447:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1463:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1468:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1459:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1459:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1472:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1455:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1455:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1443:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1443:32:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1425:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1425:51:1"
},
"nodeType": "YulExpressionStatement",
"src": "1425:51:1"
}
]
},
"name": "abi_encode_tuple_t_contract$_IStateSender_$9__to_t_address__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1349:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1360:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1371:4:1",
"type": ""
}
],
"src": "1261:221:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1672:404:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1682:29:1",
"value": {
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1700:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1705:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "1696:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1696:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1709:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1692:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1692:19:1"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "1686:2:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1727:9:1"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1742:6:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1750:2:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1738:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1738:15:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1720:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1720:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "1720:34:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1774:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1785:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1770:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1770:18:1"
},
{
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "1794:6:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "1802:2:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1790:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1790:15:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1763:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1763:43:1"
},
"nodeType": "YulExpressionStatement",
"src": "1763:43:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1826:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1837:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1822:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1822:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1842:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1815:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1815:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "1815:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1865:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1876:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1861:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1861:18:1"
},
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "1881:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1854:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1854:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "1854:34:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1914:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1925:3:1",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1910:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1910:19:1"
},
{
"name": "value2",
"nodeType": "YulIdentifier",
"src": "1931:6:1"
},
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "1939:6:1"
}
],
"functionName": {
"name": "calldatacopy",
"nodeType": "YulIdentifier",
"src": "1897:12:1"
},
"nodeType": "YulFunctionCall",
"src": "1897:49:1"
},
"nodeType": "YulExpressionStatement",
"src": "1897:49:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1970:9:1"
},
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "1981:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1966:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1966:22:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1990:3:1",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1962:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1962:32:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1996:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1955:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1955:43:1"
},
"nodeType": "YulExpressionStatement",
"src": "1955:43:1"
},
{
"nodeType": "YulAssignment",
"src": "2007:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2023:9:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "value3",
"nodeType": "YulIdentifier",
"src": "2042:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2050:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2038:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2038:15:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2059:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "2055:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2055:7:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2034:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2034:29:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2019:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2019:45:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2066:3:1",
"type": "",
"value": "128"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2015:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2015:55:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2007:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_address_t_address_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1617:9:1",
"type": ""
},
{
"name": "value3",
"nodeType": "YulTypedName",
"src": "1628:6:1",
"type": ""
},
{
"name": "value2",
"nodeType": "YulTypedName",
"src": "1636:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "1644:6:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1652:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "1663:4:1",
"type": ""
}
],
"src": "1487:589:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2228:545:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2245:9:1"
},
{
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2260:6:1"
},
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2276:3:1",
"type": "",
"value": "160"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2281:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "2272:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2272:11:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2285:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2268:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2268:19:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2256:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2256:32:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2238:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2238:51:1"
},
"nodeType": "YulExpressionStatement",
"src": "2238:51:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "2298:12:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2308:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "_1",
"nodeType": "YulTypedName",
"src": "2302:2:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2330:9:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "2341:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2326:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2326:18:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2346:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2319:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2319:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "2319:30:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "2358:27:1",
"value": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "2378:6:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2372:5:1"
},
"nodeType": "YulFunctionCall",
"src": "2372:13:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2362:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2405:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2416:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2401:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2401:18:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2421:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2394:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2394:34:1"
},
"nodeType": "YulExpressionStatement",
"src": "2394:34:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "2437:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "2446:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "2441:1:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "2506:90:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2535:9:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2546:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2531:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2531:17:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2550:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2527:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2527:26:1"
},
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "2569:6:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2577:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2565:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2565:14:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "2581:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2561:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2561:23:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "2555:5:1"
},
"nodeType": "YulFunctionCall",
"src": "2555:30:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2520:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2520:66:1"
},
"nodeType": "YulExpressionStatement",
"src": "2520:66:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2467:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2470:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "2464:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2464:13:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "2478:19:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2480:15:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2489:1:1"
},
{
"name": "_1",
"nodeType": "YulIdentifier",
"src": "2492:2:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2485:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2485:10:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2480:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "2460:3:1",
"statements": []
},
"src": "2456:140:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2630:66:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2659:9:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2670:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2655:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2655:22:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2679:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2651:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2651:31:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2684:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2644:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2644:42:1"
},
"nodeType": "YulExpressionStatement",
"src": "2644:42:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "2611:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2614:6:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "2608:2:1"
},
"nodeType": "YulFunctionCall",
"src": "2608:13:1"
},
"nodeType": "YulIf",
"src": "2605:91:1"
},
{
"nodeType": "YulAssignment",
"src": "2705:62:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2721:9:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2740:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2748:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2736:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2736:15:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2757:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "2753:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2753:7:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "2732:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2732:29:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2717:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2717:45:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2764:2:1",
"type": "",
"value": "96"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2713:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2713:54:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2705:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2189:9:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "2200:6:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2208:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "2219:4:1",
"type": ""
}
],
"src": "2081:692:1"
}
]
},
"contents": "{\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 function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\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 length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n value1 := add(_2, 32)\n value2 := length\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_encode_tuple_t_contract$_IStateSender_$9__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 function abi_encode_tuple_t_address_t_address_t_bytes_calldata_ptr__to_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), 96)\n mstore(add(headStart, 96), value3)\n calldatacopy(add(headStart, 128), value2, value3)\n mstore(add(add(headStart, value3), 128), 0)\n tail := add(add(headStart, and(add(value3, 31), not(31))), 128)\n }\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n let _1 := 32\n mstore(add(headStart, _1), 64)\n let length := mload(value1)\n mstore(add(headStart, 64), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 96), mload(add(add(value1, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(headStart, length), 96), 0)\n }\n tail := add(add(headStart, and(add(length, 31), not(31))), 96)\n }\n}",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c8063450d11f014610051578063b472047714610080578063b86cfdcf14610095578063cb10f94c146100a8575b600080fd5b600154610064906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b61009361008e3660046101a6565b6100bb565b005b6100936100a3366004610229565b610152565b600054610064906001600160a01b031681565b6000338484846040516020016100d4949392919061024b565b60408051601f19818403018152908290526000546001546316f1983160e01b84529193506001600160a01b03908116926316f198319261011a9216908590600401610297565b600060405180830381600087803b15801561013457600080fd5b505af1158015610148573d6000803e3d6000fd5b5050505050505050565b6001546001600160a01b03161561016857600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b03811681146101a157600080fd5b919050565b6000806000604084860312156101bb57600080fd5b6101c48461018a565b9250602084013567ffffffffffffffff808211156101e157600080fd5b818601915086601f8301126101f557600080fd5b81358181111561020457600080fd5b87602082850101111561021657600080fd5b6020830194508093505050509250925092565b60006020828403121561023b57600080fd5b6102448261018a565b9392505050565b6001600160a01b0385811682528416602082015260606040820181905281018290526000828460808401376000608084840101526080601f19601f850116830101905095945050505050565b60018060a01b038316815260006020604081840152835180604085015260005b818110156102d3578581018301518582016060015282016102b7565b818111156102e5576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212207bca6c92362c4b197b5887186ebbfdd20259e219566330586ce52259a886726964736f6c634300080a0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x450D11F0 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0xB4720477 EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0xB86CFDCF EQ PUSH2 0x95 JUMPI DUP1 PUSH4 0xCB10F94C EQ PUSH2 0xA8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x64 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x93 PUSH2 0x8E CALLDATASIZE PUSH1 0x4 PUSH2 0x1A6 JUMP JUMPDEST PUSH2 0xBB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x93 PUSH2 0xA3 CALLDATASIZE PUSH1 0x4 PUSH2 0x229 JUMP JUMPDEST PUSH2 0x152 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x64 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 CALLER DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD4 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x24B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH4 0x16F19831 PUSH1 0xE0 SHL DUP5 MSTORE SWAP2 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 PUSH4 0x16F19831 SWAP3 PUSH2 0x11A SWAP3 AND SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x297 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x148 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C4 DUP5 PUSH2 0x18A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x244 DUP3 PUSH2 0x18A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 DUP3 DUP5 PUSH1 0x80 DUP5 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x80 DUP5 DUP5 ADD ADD MSTORE PUSH1 0x80 PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD AND DUP4 ADD ADD SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x40 DUP2 DUP5 ADD MSTORE DUP4 MLOAD DUP1 PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2D3 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x60 ADD MSTORE DUP3 ADD PUSH2 0x2B7 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 PUSH1 0x60 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x60 ADD SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH28 0xCA6C92362C4B197B5887186EBBFDD20259E219566330586CE52259A8 DUP7 PUSH19 0x6964736F6C634300080A003300000000000000 ",
"sourceMap": "388:505:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;461:22;;;;;-1:-1:-1;;;;;461:22:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;461:22:0;;;;;;;693:198;;;;;;:::i;:::-;;:::i;:::-;;577:112;;;;;;:::i;:::-;;:::i;426:31::-;;;;;-1:-1:-1;;;;;426:31:0;;;693:198;784:17;815:10;827:9;838:5;;804:40;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;804:40:0;;;;;;;;;;850:11;;;872:7;-1:-1:-1;;;850:36:0;;804:40;;-1:-1:-1;;;;;;850:11:0;;;;:21;;:36;;872:7;;804:40;;850:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:113;693:198;;;:::o;577:112::-;636:7;;-1:-1:-1;;;;;636:7:0;:23;628:32;;;;;;666:7;:18;;-1:-1:-1;;;;;;666:18:0;-1:-1:-1;;;;;666:18:0;;;;;;;;;;577:112::o;222:173:1:-;290:20;;-1:-1:-1;;;;;339:31:1;;329:42;;319:70;;385:1;382;375:12;319:70;222:173;;;:::o;400:665::-;479:6;487;495;548:2;536:9;527:7;523:23;519:32;516:52;;;564:1;561;554:12;516:52;587:29;606:9;587:29;:::i;:::-;577:39;;667:2;656:9;652:18;639:32;690:18;731:2;723:6;720:14;717:34;;;747:1;744;737:12;717:34;785:6;774:9;770:22;760:32;;830:7;823:4;819:2;815:13;811:27;801:55;;852:1;849;842:12;801:55;892:2;879:16;918:2;910:6;907:14;904:34;;;934:1;931;924:12;904:34;979:7;974:2;965:6;961:2;957:15;953:24;950:37;947:57;;;1000:1;997;990:12;947:57;1031:2;1027;1023:11;1013:21;;1053:6;1043:16;;;;;400:665;;;;;:::o;1070:186::-;1129:6;1182:2;1170:9;1161:7;1157:23;1153:32;1150:52;;;1198:1;1195;1188:12;1150:52;1221:29;1240:9;1221:29;:::i;:::-;1211:39;1070:186;-1:-1:-1;;;1070:186:1:o;1487:589::-;-1:-1:-1;;;;;1738:15:1;;;1720:34;;1790:15;;1785:2;1770:18;;1763:43;1842:2;1837;1822:18;;1815:30;;;1861:18;;1854:34;;;1663:4;1881:6;1931;1925:3;1910:19;;1897:49;1996:1;1990:3;1981:6;1970:9;1966:22;1962:32;1955:43;2066:3;2059:2;2055:7;2050:2;2042:6;2038:15;2034:29;2023:9;2019:45;2015:55;2007:63;;1487:589;;;;;;;:::o;2081:692::-;2285:1;2281;2276:3;2272:11;2268:19;2260:6;2256:32;2245:9;2238:51;2219:4;2308:2;2346;2341;2330:9;2326:18;2319:30;2378:6;2372:13;2421:6;2416:2;2405:9;2401:18;2394:34;2446:1;2456:140;2470:6;2467:1;2464:13;2456:140;;;2565:14;;;2561:23;;2555:30;2531:17;;;2550:2;2527:26;2520:66;2485:10;;2456:140;;;2614:6;2611:1;2608:13;2605:91;;;2684:1;2679:2;2670:6;2659:9;2655:22;2651:31;2644:42;2605:91;-1:-1:-1;2757:2:1;2736:15;-1:-1:-1;;2732:29:1;2717:45;;;;2764:2;2713:54;;2081:692;-1:-1:-1;;;;2081:692:1:o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "163600",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"fxChild()": "2303",
"sendMessageToChild(address,bytes)": "infinite",
"setFxChild(address)": "26731",
"stateSender()": "2369"
}
},
"methodIdentifiers": {
"fxChild()": "450d11f0",
"sendMessageToChild(address,bytes)": "b4720477",
"setFxChild(address)": "b86cfdcf",
"stateSender()": "cb10f94c"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stateSender\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"fxChild\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"sendMessageToChild\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_fxChild\",\"type\":\"address\"}],\"name\":\"setFxChild\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stateSender\",\"outputs\":[{\"internalType\":\"contract IStateSender\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"FxRoot root contract for fx-portal\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dependencies/polygon/fxportal/FxRoot.sol\":\"FxRoot\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/dependencies/polygon/fxportal/FxRoot.sol\":{\"content\":\"/**\\n *Submitted for verification at Etherscan.io on 2021-01-17\\n */\\n\\n// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.10;\\n\\ninterface IStateSender {\\n function syncState(address receiver, bytes calldata data) external;\\n}\\n\\ninterface IFxStateSender {\\n function sendMessageToChild(address _receiver, bytes calldata _data) external;\\n}\\n\\n/**\\n * @title FxRoot root contract for fx-portal\\n */\\ncontract FxRoot is IFxStateSender {\\n IStateSender public stateSender;\\n address public fxChild;\\n\\n constructor(address _stateSender) {\\n stateSender = IStateSender(_stateSender);\\n }\\n\\n function setFxChild(address _fxChild) public {\\n require(fxChild == address(0x0));\\n fxChild = _fxChild;\\n }\\n\\n function sendMessageToChild(address _receiver, bytes calldata _data) public override {\\n bytes memory data = abi.encode(msg.sender, _receiver, _data);\\n stateSender.syncState(fxChild, data);\\n }\\n}\\n\",\"keccak256\":\"0x769319861cddae002a88989a20e63757c3dad50f6ed9902a50e82f15eff0821a\",\"license\":\"MIT\"}},\"version\":1}",
"storageLayout": {
"storage": [
{
"astId": 23,
"contract": "contracts/dependencies/polygon/fxportal/FxRoot.sol:FxRoot",
"label": "stateSender",
"offset": 0,
"slot": "0",
"type": "t_contract(IStateSender)9"
},
{
"astId": 25,
"contract": "contracts/dependencies/polygon/fxportal/FxRoot.sol:FxRoot",
"label": "fxChild",
"offset": 0,
"slot": "1",
"type": "t_address"
}
],
"types": {
"t_address": {
"encoding": "inplace",
"label": "address",
"numberOfBytes": "20"
},
"t_contract(IStateSender)9": {
"encoding": "inplace",
"label": "contract IStateSender",
"numberOfBytes": "20"
}
}
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"IFxStateSender": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_receiver",
"type": "address"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "sendMessageToChild",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {
"sendMessageToChild(address,bytes)": "b4720477"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"sendMessageToChild\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dependencies/polygon/fxportal/FxRoot.sol\":\"IFxStateSender\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/dependencies/polygon/fxportal/FxRoot.sol\":{\"content\":\"/**\\n *Submitted for verification at Etherscan.io on 2021-01-17\\n */\\n\\n// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.10;\\n\\ninterface IStateSender {\\n function syncState(address receiver, bytes calldata data) external;\\n}\\n\\ninterface IFxStateSender {\\n function sendMessageToChild(address _receiver, bytes calldata _data) external;\\n}\\n\\n/**\\n * @title FxRoot root contract for fx-portal\\n */\\ncontract FxRoot is IFxStateSender {\\n IStateSender public stateSender;\\n address public fxChild;\\n\\n constructor(address _stateSender) {\\n stateSender = IStateSender(_stateSender);\\n }\\n\\n function setFxChild(address _fxChild) public {\\n require(fxChild == address(0x0));\\n fxChild = _fxChild;\\n }\\n\\n function sendMessageToChild(address _receiver, bytes calldata _data) public override {\\n bytes memory data = abi.encode(msg.sender, _receiver, _data);\\n stateSender.syncState(fxChild, data);\\n }\\n}\\n\",\"keccak256\":\"0x769319861cddae002a88989a20e63757c3dad50f6ed9902a50e82f15eff0821a\",\"license\":\"MIT\"}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"IStateSender": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "syncState",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"functionDebugData": {},
"generatedSources": [],
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {
"syncState(address,bytes)": "16f19831"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"syncState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/dependencies/polygon/fxportal/FxRoot.sol\":\"IStateSender\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/dependencies/polygon/fxportal/FxRoot.sol\":{\"content\":\"/**\\n *Submitted for verification at Etherscan.io on 2021-01-17\\n */\\n\\n// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.10;\\n\\ninterface IStateSender {\\n function syncState(address receiver, bytes calldata data) external;\\n}\\n\\ninterface IFxStateSender {\\n function sendMessageToChild(address _receiver, bytes calldata _data) external;\\n}\\n\\n/**\\n * @title FxRoot root contract for fx-portal\\n */\\ncontract FxRoot is IFxStateSender {\\n IStateSender public stateSender;\\n address public fxChild;\\n\\n constructor(address _stateSender) {\\n stateSender = IStateSender(_stateSender);\\n }\\n\\n function setFxChild(address _fxChild) public {\\n require(fxChild == address(0x0));\\n fxChild = _fxChild;\\n }\\n\\n function sendMessageToChild(address _receiver, bytes calldata _data) public override {\\n bytes memory data = abi.encode(msg.sender, _receiver, _data);\\n stateSender.syncState(fxChild, data);\\n }\\n}\\n\",\"keccak256\":\"0x769319861cddae002a88989a20e63757c3dad50f6ed9902a50e82f15eff0821a\",\"license\":\"MIT\"}},\"version\":1}",
"storageLayout": {
"storage": [],
"types": null
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
}
},
"sources": {
"contracts/dependencies/polygon/fxportal/FxRoot.sol": {
"ast": {
"absolutePath": "contracts/dependencies/polygon/fxportal/FxRoot.sol",
"exportedSymbols": {
"FxRoot": [
83
],
"IFxStateSender": [
17
],
"IStateSender": [
9
]
},
"id": 84,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
"^",
"0.8",
".10"
],
"nodeType": "PragmaDirective",
"src": "100:24:0"
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "IStateSender",
"contractDependencies": [],
"contractKind": "interface",
"fullyImplemented": false,
"id": 9,
"linearizedBaseContracts": [
9
],
"name": "IStateSender",
"nameLocation": "136:12:0",
"nodeType": "ContractDefinition",
"nodes": [
{
"functionSelector": "16f19831",
"id": 8,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "syncState",
"nameLocation": "162:9:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 6,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 3,
"mutability": "mutable",
"name": "receiver",
"nameLocation": "180:8:0",
"nodeType": "VariableDeclaration",
"scope": 8,
"src": "172:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 2,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "172:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 5,
"mutability": "mutable",
"name": "data",
"nameLocation": "205:4:0",
"nodeType": "VariableDeclaration",
"scope": 8,
"src": "190:19:0",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 4,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "190:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "171:39:0"
},
"returnParameters": {
"id": 7,
"nodeType": "ParameterList",
"parameters": [],
"src": "219:0:0"
},
"scope": 9,
"src": "153:67:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 84,
"src": "126:96:0",
"usedErrors": []
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "IFxStateSender",
"contractDependencies": [],
"contractKind": "interface",
"fullyImplemented": false,
"id": 17,
"linearizedBaseContracts": [
17
],
"name": "IFxStateSender",
"nameLocation": "234:14:0",
"nodeType": "ContractDefinition",
"nodes": [
{
"functionSelector": "b4720477",
"id": 16,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "sendMessageToChild",
"nameLocation": "262:18:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 14,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 11,
"mutability": "mutable",
"name": "_receiver",
"nameLocation": "289:9:0",
"nodeType": "VariableDeclaration",
"scope": 16,
"src": "281:17:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 10,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "281:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 13,
"mutability": "mutable",
"name": "_data",
"nameLocation": "315:5:0",
"nodeType": "VariableDeclaration",
"scope": 16,
"src": "300:20:0",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 12,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "300:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "280:41:0"
},
"returnParameters": {
"id": 15,
"nodeType": "ParameterList",
"parameters": [],
"src": "330:0:0"
},
"scope": 17,
"src": "253:78:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 84,
"src": "224:109:0",
"usedErrors": []
},
{
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 19,
"name": "IFxStateSender",
"nodeType": "IdentifierPath",
"referencedDeclaration": 17,
"src": "407:14:0"
},
"id": 20,
"nodeType": "InheritanceSpecifier",
"src": "407:14:0"
}
],
"canonicalName": "FxRoot",
"contractDependencies": [],
"contractKind": "contract",
"documentation": {
"id": 18,
"nodeType": "StructuredDocumentation",
"src": "335:52:0",
"text": " @title FxRoot root contract for fx-portal"
},
"fullyImplemented": true,
"id": 83,
"linearizedBaseContracts": [
83,
17
],
"name": "FxRoot",
"nameLocation": "397:6:0",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": false,
"functionSelector": "cb10f94c",
"id": 23,
"mutability": "mutable",
"name": "stateSender",
"nameLocation": "446:11:0",
"nodeType": "VariableDeclaration",
"scope": 83,
"src": "426:31:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStateSender_$9",
"typeString": "contract IStateSender"
},
"typeName": {
"id": 22,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 21,
"name": "IStateSender",
"nodeType": "IdentifierPath",
"referencedDeclaration": 9,
"src": "426:12:0"
},
"referencedDeclaration": 9,
"src": "426:12:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStateSender_$9",
"typeString": "contract IStateSender"
}
},
"visibility": "public"
},
{
"constant": false,
"functionSelector": "450d11f0",
"id": 25,
"mutability": "mutable",
"name": "fxChild",
"nameLocation": "476:7:0",
"nodeType": "VariableDeclaration",
"scope": 83,
"src": "461:22:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 24,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "461:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "public"
},
{
"body": {
"id": 36,
"nodeType": "Block",
"src": "522:51:0",
"statements": [
{
"expression": {
"id": 34,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 30,
"name": "stateSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 23,
"src": "528:11:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStateSender_$9",
"typeString": "contract IStateSender"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 32,
"name": "_stateSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27,
"src": "555:12:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 31,
"name": "IStateSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9,
"src": "542:12:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IStateSender_$9_$",
"typeString": "type(contract IStateSender)"
}
},
"id": 33,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "542:26:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStateSender_$9",
"typeString": "contract IStateSender"
}
},
"src": "528:40:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStateSender_$9",
"typeString": "contract IStateSender"
}
},
"id": 35,
"nodeType": "ExpressionStatement",
"src": "528:40:0"
}
]
},
"id": 37,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 28,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 27,
"mutability": "mutable",
"name": "_stateSender",
"nameLocation": "508:12:0",
"nodeType": "VariableDeclaration",
"scope": 37,
"src": "500:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 26,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "500:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "499:22:0"
},
"returnParameters": {
"id": 29,
"nodeType": "ParameterList",
"parameters": [],
"src": "522:0:0"
},
"scope": 83,
"src": "488:85:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 55,
"nodeType": "Block",
"src": "622:67:0",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 48,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 43,
"name": "fxChild",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25,
"src": "636:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"arguments": [
{
"hexValue": "307830",
"id": 46,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "655:3:0",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0x0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 45,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "647:7:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 44,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "647:7:0",
"typeDescriptions": {}
}
},
"id": 47,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "647:12:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "636:23:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 42,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "628:7:0",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 49,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "628:32:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 50,
"nodeType": "ExpressionStatement",
"src": "628:32:0"
},
{
"expression": {
"id": 53,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 51,
"name": "fxChild",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25,
"src": "666:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 52,
"name": "_fxChild",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 39,
"src": "676:8:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "666:18:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 54,
"nodeType": "ExpressionStatement",
"src": "666:18:0"
}
]
},
"functionSelector": "b86cfdcf",
"id": 56,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "setFxChild",
"nameLocation": "586:10:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 40,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 39,
"mutability": "mutable",
"name": "_fxChild",
"nameLocation": "605:8:0",
"nodeType": "VariableDeclaration",
"scope": 56,
"src": "597:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 38,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "597:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "596:18:0"
},
"returnParameters": {
"id": 41,
"nodeType": "ParameterList",
"parameters": [],
"src": "622:0:0"
},
"scope": 83,
"src": "577:112:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
16
],
"body": {
"id": 81,
"nodeType": "Block",
"src": "778:113:0",
"statements": [
{
"assignments": [
65
],
"declarations": [
{
"constant": false,
"id": 65,
"mutability": "mutable",
"name": "data",
"nameLocation": "797:4:0",
"nodeType": "VariableDeclaration",
"scope": 81,
"src": "784:17:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 64,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "784:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"id": 73,
"initialValue": {
"arguments": [
{
"expression": {
"id": 68,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "815:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 69,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "815:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 70,
"name": "_receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 58,
"src": "827:9:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 71,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 60,
"src": "838:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
],
"expression": {
"id": 66,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "804:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 67,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encode",
"nodeType": "MemberAccess",
"src": "804:10:0",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 72,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "804:40:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "784:60:0"
},
{
"expression": {
"arguments": [
{
"id": 77,
"name": "fxChild",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25,
"src": "872:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 78,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 65,
"src": "881:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"id": 74,
"name": "stateSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 23,
"src": "850:11:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IStateSender_$9",
"typeString": "contract IStateSender"
}
},
"id": 76,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "syncState",
"nodeType": "MemberAccess",
"referencedDeclaration": 8,
"src": "850:21:0",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (address,bytes memory) external"
}
},
"id": 79,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "850:36:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 80,
"nodeType": "ExpressionStatement",
"src": "850:36:0"
}
]
},
"functionSelector": "b4720477",
"id": 82,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "sendMessageToChild",
"nameLocation": "702:18:0",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 62,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "769:8:0"
},
"parameters": {
"id": 61,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 58,
"mutability": "mutable",
"name": "_receiver",
"nameLocation": "729:9:0",
"nodeType": "VariableDeclaration",
"scope": 82,
"src": "721:17:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 57,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "721:7:0",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 60,
"mutability": "mutable",
"name": "_data",
"nameLocation": "755:5:0",
"nodeType": "VariableDeclaration",
"scope": 82,
"src": "740:20:0",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 59,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "740:5:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "720:41:0"
},
"returnParameters": {
"id": 63,
"nodeType": "ParameterList",
"parameters": [],
"src": "778:0:0"
},
"scope": 83,
"src": "693:198:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
}
],
"scope": 84,
"src": "388:505:0",
"usedErrors": []
}
],
"src": "100:794:0"
},
"id": 0
}
}
}
}