hardlydifficult-eth
Version:
A collection of reusable contracts and Javascript helpers for Ethereum.
1,195 lines • 102 kB
JSON
{
"contractName": "CallContract",
"abi": [],
"metadata": "{\"compiler\":{\"version\":\"0.6.10+commit.00c0fcaf\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{},\"title\":\"Calls an arbitrary contract function.\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/proxies/CallContract.sol\":\"CallContract\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":2000000},\"remappings\":[]},\"sources\":{\"project:/contracts/proxies/CallContract.sol\":{\"keccak256\":\"0xb30b0e77e31fd3e37b3a2028fb4ebcf7789d4225feb011b921b8a25447a09b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ee3c46722099a245797c4116382ba9fbdc338274d4ed440e97d15ff761611efa\",\"dweb:/ipfs/QmU2Zb2vmGeEjPoa6ZbCVGgjw2ogdnuKQeRCSoiv7SK4ro\"]}},\"version\":1}",
"bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c2d49ceba3fa6f022f604ac2ecebcf651292082922c4116bd0ef57573e0fbb7664736f6c634300060a0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c2d49ceba3fa6f022f604ac2ecebcf651292082922c4116bd0ef57573e0fbb7664736f6c634300060a0033",
"immutableReferences": {},
"sourceMap": "113:1342:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
"deployedSourceMap": "113:1342:17:-:0;;;;;;;;",
"source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.6.0;\n\n/**\n * @title Calls an arbitrary contract function.\n */\nlibrary CallContract\n{\n function _readUint(\n address _contract,\n bytes memory _callData\n ) internal view\n returns (uint)\n {\n (bool success, bytes memory result) = _contract.staticcall(_callData);\n require(success, 'INTERNAL_CONTRACT_READ_CALL_FAILED');\n return abi.decode(result, (uint));\n }\n\n function _call(\n address _contract,\n bytes memory _callData,\n uint _ethValue\n ) internal\n {\n bool result;\n // solium-disable-next-line\n assembly\n {\n result := call(\n gas(),\n _contract,\n _ethValue,\n add(_callData, 32), // Start of callData information\n mload(_callData), // Size of callData\n 0, // Output ignored\n 0 // Output ignored\n )\n }\n require(result, 'INTERNAL_CONTRACT_CALL_FAILED');\n }\n\n function _callByPosition(\n address _contract,\n bytes memory _callDataConcat,\n uint _startPosition,\n uint _length,\n uint _ethValue\n ) internal\n {\n bool result;\n // solium-disable-next-line\n assembly\n {\n result := call(\n gas(),\n _contract,\n _ethValue,\n add(_callDataConcat, add(32, _startPosition)), // Start of callData information\n _length,\n 0, // Output ignored\n 0 // Output ignored\n )\n }\n require(result, 'INTERNAL_CONTRACT_CALL_FAILED');\n }\n}\n",
"sourcePath": "/home/circleci/repo/contracts/proxies/CallContract.sol",
"ast": {
"absolutePath": "project:/contracts/proxies/CallContract.sol",
"exportedSymbols": {
"CallContract": [
3730
]
},
"id": 3731,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 3654,
"literals": [
"solidity",
"^",
"0.6",
".0"
],
"nodeType": "PragmaDirective",
"src": "32:23:17"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "library",
"documentation": {
"id": 3655,
"nodeType": "StructuredDocumentation",
"src": "57:55:17",
"text": " @title Calls an arbitrary contract function."
},
"fullyImplemented": true,
"id": 3730,
"linearizedBaseContracts": [
3730
],
"name": "CallContract",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 3686,
"nodeType": "Block",
"src": "247:179:17",
"statements": [
{
"assignments": [
3665,
3667
],
"declarations": [
{
"constant": false,
"id": 3665,
"mutability": "mutable",
"name": "success",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 3686,
"src": "254:12:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 3664,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "254:4:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 3667,
"mutability": "mutable",
"name": "result",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 3686,
"src": "268:19:17",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 3666,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "268:5:17",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 3672,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 3670,
"name": "_callData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3659,
"src": "312:9:17",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"argumentTypes": null,
"id": 3668,
"name": "_contract",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3657,
"src": "291:9:17",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 3669,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "staticcall",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "291:20:17",
"typeDescriptions": {
"typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "function (bytes memory) view returns (bool,bytes memory)"
}
},
"id": 3671,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "291:31:17",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
"typeString": "tuple(bool,bytes memory)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "253:69:17"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 3674,
"name": "success",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3665,
"src": "336:7:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "494e5445524e414c5f434f4e54524143545f524541445f43414c4c5f4641494c4544",
"id": 3675,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "345:36:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_460500885b09a276a8bbffd9560c9bd39ee301270d1a1601c753ade188d5d945",
"typeString": "literal_string \"INTERNAL_CONTRACT_READ_CALL_FAILED\""
},
"value": "INTERNAL_CONTRACT_READ_CALL_FAILED"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_460500885b09a276a8bbffd9560c9bd39ee301270d1a1601c753ade188d5d945",
"typeString": "literal_string \"INTERNAL_CONTRACT_READ_CALL_FAILED\""
}
],
"id": 3673,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "328:7:17",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 3676,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "328:54:17",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 3677,
"nodeType": "ExpressionStatement",
"src": "328:54:17"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 3680,
"name": "result",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3667,
"src": "406:6:17",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"id": 3682,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "415:4:17",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 3681,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "415:4:17",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
}
],
"id": 3683,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "414:6:17",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
}
],
"expression": {
"argumentTypes": null,
"id": 3678,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "395:3:17",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 3679,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "decode",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "395:10:17",
"typeDescriptions": {
"typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 3684,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "395:26:17",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 3663,
"id": 3685,
"nodeType": "Return",
"src": "388:33:17"
}
]
},
"documentation": null,
"id": 3687,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_readUint",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 3660,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 3657,
"mutability": "mutable",
"name": "_contract",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 3687,
"src": "162:17:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 3656,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "162:7:17",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 3659,
"mutability": "mutable",
"name": "_callData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 3687,
"src": "185:22:17",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 3658,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "185:5:17",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "156:55:17"
},
"returnParameters": {
"id": 3663,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 3662,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 3687,
"src": "239:4:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 3661,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "239:4:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "238:6:17"
},
"scope": 3730,
"src": "138:288:17",
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 3705,
"nodeType": "Block",
"src": "531:380:17",
"statements": [
{
"assignments": [
3697
],
"declarations": [
{
"constant": false,
"id": 3697,
"mutability": "mutable",
"name": "result",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 3705,
"src": "537:11:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 3696,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "537:4:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 3698,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "537:11:17"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "599:254:17",
"statements": [
{
"nodeType": "YulAssignment",
"src": "607:240:17",
"value": {
"arguments": [
{
"arguments": [],
"functionName": {
"name": "gas",
"nodeType": "YulIdentifier",
"src": "631:3:17"
},
"nodeType": "YulFunctionCall",
"src": "631:5:17"
},
{
"name": "_contract",
"nodeType": "YulIdentifier",
"src": "646:9:17"
},
{
"name": "_ethValue",
"nodeType": "YulIdentifier",
"src": "665:9:17"
},
{
"arguments": [
{
"name": "_callData",
"nodeType": "YulIdentifier",
"src": "688:9:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "699:2:17",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "684:3:17"
},
"nodeType": "YulFunctionCall",
"src": "684:18:17"
},
{
"arguments": [
{
"name": "_callData",
"nodeType": "YulIdentifier",
"src": "751:9:17"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "745:5:17"
},
"nodeType": "YulFunctionCall",
"src": "745:16:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "791:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "820:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "call",
"nodeType": "YulIdentifier",
"src": "617:4:17"
},
"nodeType": "YulFunctionCall",
"src": "617:230:17"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "607:6:17"
}
]
}
]
},
"evmVersion": "istanbul",
"externalReferences": [
{
"declaration": 3691,
"isOffset": false,
"isSlot": false,
"src": "688:9:17",
"valueSize": 1
},
{
"declaration": 3691,
"isOffset": false,
"isSlot": false,
"src": "751:9:17",
"valueSize": 1
},
{
"declaration": 3689,
"isOffset": false,
"isSlot": false,
"src": "646:9:17",
"valueSize": 1
},
{
"declaration": 3693,
"isOffset": false,
"isSlot": false,
"src": "665:9:17",
"valueSize": 1
},
{
"declaration": 3697,
"isOffset": false,
"isSlot": false,
"src": "607:6:17",
"valueSize": 1
}
],
"id": 3699,
"nodeType": "InlineAssembly",
"src": "586:267:17"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 3701,
"name": "result",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3697,
"src": "866:6:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "494e5445524e414c5f434f4e54524143545f43414c4c5f4641494c4544",
"id": 3702,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "874:31:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_ddf638174fc17ca90a5b28ed70027a57af4c383bef9c2359a73583c8bd399756",
"typeString": "literal_string \"INTERNAL_CONTRACT_CALL_FAILED\""
},
"value": "INTERNAL_CONTRACT_CALL_FAILED"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_ddf638174fc17ca90a5b28ed70027a57af4c383bef9c2359a73583c8bd399756",
"typeString": "literal_string \"INTERNAL_CONTRACT_CALL_FAILED\""
}
],
"id": 3700,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "858:7:17",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 3703,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "858:48:17",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 3704,
"nodeType": "ExpressionStatement",
"src": "858:48:17"
}
]
},
"documentation": null,
"id": 3706,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_call",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 3694,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 3689,
"mutability": "mutable",
"name": "_contract",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 3706,
"src": "450:17:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 3688,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "450:7:17",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 3691,
"mutability": "mutable",
"name": "_callData",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 3706,
"src": "473:22:17",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 3690,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "473:5:17",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 3693,
"mutability": "mutable",
"name": "_ethValue",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 3706,
"src": "501:14:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 3692,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "501:4:17",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "444:75:17"
},
"returnParameters": {
"id": 3695,
"nodeType": "ParameterList",
"parameters": [],
"src": "531:0:17"
},
"scope": 3730,
"src": "430:481:17",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 3728,
"nodeType": "Block",
"src": "1075:378:17",
"statements": [
{
"assignments": [
3720
],
"declarations": [
{
"constant": false,
"id": 3720,
"mutability": "mutable",
"name": "result",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 3728,
"src": "1081:11:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 3719,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1081:4:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 3721,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "1081:11:17"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "1143:252:17",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1151:238:17",
"value": {
"arguments": [
{
"arguments": [],
"functionName": {
"name": "gas",
"nodeType": "YulIdentifier",
"src": "1175:3:17"
},
"nodeType": "YulFunctionCall",
"src": "1175:5:17"
},
{
"name": "_contract",
"nodeType": "YulIdentifier",
"src": "1190:9:17"
},
{
"name": "_ethValue",
"nodeType": "YulIdentifier",
"src": "1209:9:17"
},
{
"arguments": [
{
"name": "_callDataConcat",
"nodeType": "YulIdentifier",
"src": "1232:15:17"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1253:2:17",
"type": "",
"value": "32"
},
{
"name": "_startPosition",
"nodeType": "YulIdentifier",
"src": "1257:14:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1249:3:17"
},
"nodeType": "YulFunctionCall",
"src": "1249:23:17"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1228:3:17"
},
"nodeType": "YulFunctionCall",
"src": "1228:45:17"
},
{
"name": "_length",
"nodeType": "YulIdentifier",
"src": "1316:7:17"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1333:1:17",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1362:1:17",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "call",
"nodeType": "YulIdentifier",
"src": "1161:4:17"
},
"nodeType": "YulFunctionCall",
"src": "1161:228:17"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "1151:6:17"
}
]
}
]
},
"evmVersion": "istanbul",
"externalReferences": [
{
"declaration": 3710,
"isOffset": false,
"isSlot": false,
"src": "1232:15:17",
"valueSize": 1
},
{
"declaration": 3708,
"isOffset": false,
"isSlot": false,
"src": "1190:9:17",
"valueSize": 1
},
{
"declaration": 3716,
"isOffset": false,
"isSlot": false,
"src": "1209:9:17",
"valueSize": 1
},
{
"declaration": 3714,
"isOffset": false,
"isSlot": false,
"src": "1316:7:17",
"valueSize": 1
},
{
"declaration": 3712,
"isOffset": false,
"isSlot": false,
"src": "1257:14:17",
"valueSize": 1
},
{
"declaration": 3720,
"isOffset": false,
"isSlot": false,
"src": "1151:6:17",
"valueSize": 1
}
],
"id": 3722,
"nodeType": "InlineAssembly",
"src": "1130:265:17"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 3724,
"name": "result",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3720,
"src": "1408:6:17",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "494e5445524e414c5f434f4e54524143545f43414c4c5f4641494c4544",
"id": 3725,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1416:31:17",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_ddf638174fc17ca90a5b28ed70027a57af4c383bef9c2359a73583c8bd399756",
"typeString": "literal_string \"INTERNAL_CONTRACT_CALL_FAILED\""
},
"value": "INTERNAL_CONTRACT_CALL_FAILED"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_ddf638174fc17ca90a5b28ed70027a57af4c383bef9c2359a73583c8bd399756",
"typeString": "literal_string \"INTERNAL_CONTRACT_CALL_FAILED\""
}
],
"id": 3723,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1400:7:17",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 3726,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1400:48:17",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 3727,
"nodeType": "ExpressionStatement",
"src": "1400:48:17"
}
]
},
"documentation": null,
"id": 3729,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_callByPosition",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 3717,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 3708,
"mutability": "mutable",
"name": "_contract",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 3729,
"src": "945:17:17",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "ad