UNPKG

@tokamak-network/thanos-contracts

Version:
1 lines 81.3 kB
{"abi":[],"bytecode":{"object":"0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300080f000a","sourceMap":"194:8214:265:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:8214:265;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300080f000a","sourceMap":"194:8214:265:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/tokamak-contracts/USDC/libraries/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"src/tokamak-contracts/USDC/libraries/Address.sol\":{\"keccak256\":\"0x1d1dd930cd27cde1a42984254a481d8edb615a93bcea1a1d188568018751c92f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f54df028fb62a3a9ffdedba1b9209391b985b229c7c37a28acf27d7b34478246\",\"dweb:/ipfs/QmdkP1fEBq8mieprvTCMcFTihDfBNzEXwRRAE9teJ8x4nx\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/tokamak-contracts/USDC/libraries/Address.sol":"Address"},"evmVersion":"london","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/tokamak-contracts/USDC/libraries/Address.sol":{"keccak256":"0x1d1dd930cd27cde1a42984254a481d8edb615a93bcea1a1d188568018751c92f","urls":["bzz-raw://f54df028fb62a3a9ffdedba1b9209391b985b229c7c37a28acf27d7b34478246","dweb:/ipfs/QmdkP1fEBq8mieprvTCMcFTihDfBNzEXwRRAE9teJ8x4nx"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user"},"devdoc":{"version":1,"kind":"dev","details":"Collection of functions related to the address type"},"ast":{"absolutePath":"src/tokamak-contracts/USDC/libraries/Address.sol","id":121160,"exportedSymbols":{"Address":[121159]},"nodeType":"SourceUnit","src":"101:8308:265","nodes":[{"id":120866,"nodeType":"PragmaDirective","src":"101:23:265","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":121159,"nodeType":"ContractDefinition","src":"194:8214:265","nodes":[{"id":120882,"nodeType":"FunctionDefinition","src":"1175:320:265","nodes":[],"body":{"id":120881,"nodeType":"Block","src":"1241:254:265","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":120875,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120870,"src":"1465:7:265","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":120876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"code","nodeType":"MemberAccess","src":"1465:12:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":120877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1465:19:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":120878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1487:1:265","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1465:23:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":120874,"id":120880,"nodeType":"Return","src":"1458:30:265"}]},"documentation":{"id":120868,"nodeType":"StructuredDocumentation","src":"216:954:265","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1184:10:265","parameters":{"id":120871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120870,"mutability":"mutable","name":"account","nameLocation":"1203:7:265","nodeType":"VariableDeclaration","scope":120882,"src":"1195:15:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120869,"name":"address","nodeType":"ElementaryTypeName","src":"1195:7:265","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1194:17:265"},"returnParameters":{"id":120874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120873,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120882,"src":"1235:4:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120872,"name":"bool","nodeType":"ElementaryTypeName","src":"1235:4:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1234:6:265"},"scope":121159,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":120916,"nodeType":"FunctionDefinition","src":"2419:313:265","nodes":[],"body":{"id":120915,"nodeType":"Block","src":"2490:242:265","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":120893,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2516:4:265","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$121159","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$121159","typeString":"library Address"}],"id":120892,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2508:7:265","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120891,"name":"address","nodeType":"ElementaryTypeName","src":"2508:7:265","typeDescriptions":{}}},"id":120894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2508:13:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":120895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2508:21:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":120896,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120887,"src":"2533:6:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2508:31:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":120898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2541:31:265","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":120890,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2500:7:265","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2500:73:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120900,"nodeType":"ExpressionStatement","src":"2500:73:265"},{"assignments":[120902,null],"declarations":[{"constant":false,"id":120902,"mutability":"mutable","name":"success","nameLocation":"2590:7:265","nodeType":"VariableDeclaration","scope":120915,"src":"2585:12:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120901,"name":"bool","nodeType":"ElementaryTypeName","src":"2585:4:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":120909,"initialValue":{"arguments":[{"hexValue":"","id":120907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2634:2:265","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":120903,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120885,"src":"2602:9:265","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":120904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2602:14:265","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":120906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":120905,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120887,"src":"2625:6:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2602:31:265","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":120908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2602:35:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2584:53:265"},{"expression":{"arguments":[{"id":120911,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120902,"src":"2655:7:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":120912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2664:60:265","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":120910,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2647:7:265","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2647:78:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120914,"nodeType":"ExpressionStatement","src":"2647:78:265"}]},"documentation":{"id":120883,"nodeType":"StructuredDocumentation","src":"1501:913:265","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions\n pattern]."},"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2428:9:265","parameters":{"id":120888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120885,"mutability":"mutable","name":"recipient","nameLocation":"2454:9:265","nodeType":"VariableDeclaration","scope":120916,"src":"2438:25:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":120884,"name":"address","nodeType":"ElementaryTypeName","src":"2438:15:265","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":120887,"mutability":"mutable","name":"amount","nameLocation":"2473:6:265","nodeType":"VariableDeclaration","scope":120916,"src":"2465:14:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120886,"name":"uint256","nodeType":"ElementaryTypeName","src":"2465:7:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2437:43:265"},"returnParameters":{"id":120889,"nodeType":"ParameterList","parameters":[],"src":"2490:0:265"},"scope":121159,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":120933,"nodeType":"FunctionDefinition","src":"3481:173:265","nodes":[],"body":{"id":120932,"nodeType":"Block","src":"3570:84:265","nodes":[],"statements":[{"expression":{"arguments":[{"id":120927,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120919,"src":"3600:6:265","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120928,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120921,"src":"3608:4:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":120929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3614:32:265","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":120926,"name":"functionCall","nodeType":"Identifier","overloadedDeclarations":[120933,120953],"referencedDeclaration":120953,"src":"3587:12:265","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":120930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3587:60:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":120925,"id":120931,"nodeType":"Return","src":"3580:67:265"}]},"documentation":{"id":120917,"nodeType":"StructuredDocumentation","src":"2738:738:265","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use\n https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3490:12:265","parameters":{"id":120922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120919,"mutability":"mutable","name":"target","nameLocation":"3511:6:265","nodeType":"VariableDeclaration","scope":120933,"src":"3503:14:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120918,"name":"address","nodeType":"ElementaryTypeName","src":"3503:7:265","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120921,"mutability":"mutable","name":"data","nameLocation":"3532:4:265","nodeType":"VariableDeclaration","scope":120933,"src":"3519:17:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120920,"name":"bytes","nodeType":"ElementaryTypeName","src":"3519:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3502:35:265"},"returnParameters":{"id":120925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120924,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120933,"src":"3556:12:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120923,"name":"bytes","nodeType":"ElementaryTypeName","src":"3556:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3555:14:265"},"scope":121159,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":120953,"nodeType":"FunctionDefinition","src":"3876:243:265","nodes":[],"body":{"id":120952,"nodeType":"Block","src":"4043:76:265","nodes":[],"statements":[{"expression":{"arguments":[{"id":120946,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120936,"src":"4082:6:265","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120947,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120938,"src":"4090:4:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":120948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4096:1:265","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":120949,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120940,"src":"4099:12:265","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":120945,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[120973,121023],"referencedDeclaration":121023,"src":"4060:21:265","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":120950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4060:52:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":120944,"id":120951,"nodeType":"Return","src":"4053:59:265"}]},"documentation":{"id":120934,"nodeType":"StructuredDocumentation","src":"3660:211:265","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3885:12:265","parameters":{"id":120941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120936,"mutability":"mutable","name":"target","nameLocation":"3915:6:265","nodeType":"VariableDeclaration","scope":120953,"src":"3907:14:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120935,"name":"address","nodeType":"ElementaryTypeName","src":"3907:7:265","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120938,"mutability":"mutable","name":"data","nameLocation":"3944:4:265","nodeType":"VariableDeclaration","scope":120953,"src":"3931:17:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120937,"name":"bytes","nodeType":"ElementaryTypeName","src":"3931:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":120940,"mutability":"mutable","name":"errorMessage","nameLocation":"3972:12:265","nodeType":"VariableDeclaration","scope":120953,"src":"3958:26:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":120939,"name":"string","nodeType":"ElementaryTypeName","src":"3958:6:265","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3897:93:265"},"returnParameters":{"id":120944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120943,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120953,"src":"4025:12:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120942,"name":"bytes","nodeType":"ElementaryTypeName","src":"4025:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4024:14:265"},"scope":121159,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":120973,"nodeType":"FunctionDefinition","src":"4481:224:265","nodes":[],"body":{"id":120972,"nodeType":"Block","src":"4594:111:265","nodes":[],"statements":[{"expression":{"arguments":[{"id":120966,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120956,"src":"4633:6:265","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120967,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120958,"src":"4641:4:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":120968,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120960,"src":"4647:5:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":120969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4654:43:265","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":120965,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[120973,121023],"referencedDeclaration":121023,"src":"4611:21:265","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":120970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4611:87:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":120964,"id":120971,"nodeType":"Return","src":"4604:94:265"}]},"documentation":{"id":120954,"nodeType":"StructuredDocumentation","src":"4125:351:265","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4490:21:265","parameters":{"id":120961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120956,"mutability":"mutable","name":"target","nameLocation":"4520:6:265","nodeType":"VariableDeclaration","scope":120973,"src":"4512:14:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120955,"name":"address","nodeType":"ElementaryTypeName","src":"4512:7:265","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120958,"mutability":"mutable","name":"data","nameLocation":"4541:4:265","nodeType":"VariableDeclaration","scope":120973,"src":"4528:17:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120957,"name":"bytes","nodeType":"ElementaryTypeName","src":"4528:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":120960,"mutability":"mutable","name":"value","nameLocation":"4555:5:265","nodeType":"VariableDeclaration","scope":120973,"src":"4547:13:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120959,"name":"uint256","nodeType":"ElementaryTypeName","src":"4547:7:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4511:50:265"},"returnParameters":{"id":120964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120963,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120973,"src":"4580:12:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120962,"name":"bytes","nodeType":"ElementaryTypeName","src":"4580:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4579:14:265"},"scope":121159,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":121023,"nodeType":"FunctionDefinition","src":"4953:521:265","nodes":[],"body":{"id":121022,"nodeType":"Block","src":"5152:322:265","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":120990,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5178:4:265","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$121159","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$121159","typeString":"library Address"}],"id":120989,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5170:7:265","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120988,"name":"address","nodeType":"ElementaryTypeName","src":"5170:7:265","typeDescriptions":{}}},"id":120991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5170:13:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":120992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"5170:21:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":120993,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120980,"src":"5195:5:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5170:30:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":120995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5202:40:265","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":120987,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5162:7:265","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5162:81:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120997,"nodeType":"ExpressionStatement","src":"5162:81:265"},{"expression":{"arguments":[{"arguments":[{"id":121000,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120976,"src":"5272:6:265","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120999,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120882,"src":"5261:10:265","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":121001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5261:18:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":121002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5281:31:265","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":120998,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5253:7:265","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":121003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5253:60:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":121004,"nodeType":"ExpressionStatement","src":"5253:60:265"},{"assignments":[121006,121008],"declarations":[{"constant":false,"id":121006,"mutability":"mutable","name":"success","nameLocation":"5330:7:265","nodeType":"VariableDeclaration","scope":121022,"src":"5325:12:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":121005,"name":"bool","nodeType":"ElementaryTypeName","src":"5325:4:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":121008,"mutability":"mutable","name":"returndata","nameLocation":"5352:10:265","nodeType":"VariableDeclaration","scope":121022,"src":"5339:23:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121007,"name":"bytes","nodeType":"ElementaryTypeName","src":"5339:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":121015,"initialValue":{"arguments":[{"id":121013,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120978,"src":"5394:4:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":121009,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120976,"src":"5366:6:265","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":121010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"5366:11:265","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":121012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":121011,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120980,"src":"5386:5:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5366:27:265","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":121014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5366:33:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5324:75:265"},{"expression":{"arguments":[{"id":121017,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121006,"src":"5433:7:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":121018,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121008,"src":"5442:10:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":121019,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120982,"src":"5454:12:265","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":121016,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121158,"src":"5416:16:265","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":121020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5416:51:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":120986,"id":121021,"nodeType":"Return","src":"5409:58:265"}]},"documentation":{"id":120974,"nodeType":"StructuredDocumentation","src":"4711:237:265","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4962:21:265","parameters":{"id":120983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120976,"mutability":"mutable","name":"target","nameLocation":"5001:6:265","nodeType":"VariableDeclaration","scope":121023,"src":"4993:14:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120975,"name":"address","nodeType":"ElementaryTypeName","src":"4993:7:265","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120978,"mutability":"mutable","name":"data","nameLocation":"5030:4:265","nodeType":"VariableDeclaration","scope":121023,"src":"5017:17:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120977,"name":"bytes","nodeType":"ElementaryTypeName","src":"5017:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":120980,"mutability":"mutable","name":"value","nameLocation":"5052:5:265","nodeType":"VariableDeclaration","scope":121023,"src":"5044:13:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120979,"name":"uint256","nodeType":"ElementaryTypeName","src":"5044:7:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120982,"mutability":"mutable","name":"errorMessage","nameLocation":"5081:12:265","nodeType":"VariableDeclaration","scope":121023,"src":"5067:26:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":120981,"name":"string","nodeType":"ElementaryTypeName","src":"5067:6:265","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4983:116:265"},"returnParameters":{"id":120986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120985,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":121023,"src":"5134:12:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120984,"name":"bytes","nodeType":"ElementaryTypeName","src":"5134:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5133:14:265"},"scope":121159,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":121040,"nodeType":"FunctionDefinition","src":"5651:197:265","nodes":[],"body":{"id":121039,"nodeType":"Block","src":"5751:97:265","nodes":[],"statements":[{"expression":{"arguments":[{"id":121034,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121026,"src":"5787:6:265","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121035,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121028,"src":"5795:4:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":121036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5801:39:265","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":121033,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[121040,121075],"referencedDeclaration":121075,"src":"5768:18:265","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":121037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5768:73:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":121032,"id":121038,"nodeType":"Return","src":"5761:80:265"}]},"documentation":{"id":121024,"nodeType":"StructuredDocumentation","src":"5480:166:265","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5660:18:265","parameters":{"id":121029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121026,"mutability":"mutable","name":"target","nameLo