{"abi":[],"bytecode":{"object":"0x602c6032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea164736f6c634300081a000a","sourceMap":"194:8214:95:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:8214:95;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x730000000000000000000000000000000000000000301460806040525f80fdfea164736f6c634300081a000a","sourceMap":"194:8214:95:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"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\":\"cancun\",\"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.26+commit.8a97fa7a"},"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":"cancun","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":60994,"exportedSymbols":{"Address":[60993]},"nodeType":"SourceUnit","src":"101:8308:95","nodes":[{"id":60700,"nodeType":"PragmaDirective","src":"101:23:95","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":60993,"nodeType":"ContractDefinition","src":"194:8214:95","nodes":[{"id":60716,"nodeType":"FunctionDefinition","src":"1175:320:95","nodes":[],"body":{"id":60715,"nodeType":"Block","src":"1241:254:95","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":60709,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60704,"src":"1465:7:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1473:4:95","memberName":"code","nodeType":"MemberAccess","src":"1465:12:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":60711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1478:6:95","memberName":"length","nodeType":"MemberAccess","src":"1465:19:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":60712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1487:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1465:23:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":60708,"id":60714,"nodeType":"Return","src":"1458:30:95"}]},"documentation":{"id":60702,"nodeType":"StructuredDocumentation","src":"216:954:95","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:95","parameters":{"id":60705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60704,"mutability":"mutable","name":"account","nameLocation":"1203:7:95","nodeType":"VariableDeclaration","scope":60716,"src":"1195:15:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60703,"name":"address","nodeType":"ElementaryTypeName","src":"1195:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1194:17:95"},"returnParameters":{"id":60708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60707,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60716,"src":"1235:4:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":60706,"name":"bool","nodeType":"ElementaryTypeName","src":"1235:4:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1234:6:95"},"scope":60993,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":60750,"nodeType":"FunctionDefinition","src":"2419:313:95","nodes":[],"body":{"id":60749,"nodeType":"Block","src":"2490:242:95","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":60727,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2516:4:95","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$60993","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$60993","typeString":"library Address"}],"id":60726,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2508:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":60725,"name":"address","nodeType":"ElementaryTypeName","src":"2508:7:95","typeDescriptions":{}}},"id":60728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2508:13:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2522:7:95","memberName":"balance","nodeType":"MemberAccess","src":"2508:21:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":60730,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60721,"src":"2533:6:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2508:31:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":60732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2541:31:95","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":60724,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2500:7:95","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":60733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2500:73:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60734,"nodeType":"ExpressionStatement","src":"2500:73:95"},{"assignments":[60736,null],"declarations":[{"constant":false,"id":60736,"mutability":"mutable","name":"success","nameLocation":"2590:7:95","nodeType":"VariableDeclaration","scope":60749,"src":"2585:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":60735,"name":"bool","nodeType":"ElementaryTypeName","src":"2585:4:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":60743,"initialValue":{"arguments":[{"hexValue":"","id":60741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2634:2:95","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":60737,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60719,"src":"2602:9:95","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":60738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2612:4:95","memberName":"call","nodeType":"MemberAccess","src":"2602:14:95","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":60740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":60739,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60721,"src":"2625:6:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2602:31:95","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":60742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2602:35:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2584:53:95"},{"expression":{"arguments":[{"id":60745,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60736,"src":"2655:7:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":60746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2664:60:95","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":60744,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2647:7:95","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":60747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2647:78:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60748,"nodeType":"ExpressionStatement","src":"2647:78:95"}]},"documentation":{"id":60717,"nodeType":"StructuredDocumentation","src":"1501:913:95","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:95","parameters":{"id":60722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60719,"mutability":"mutable","name":"recipient","nameLocation":"2454:9:95","nodeType":"VariableDeclaration","scope":60750,"src":"2438:25:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":60718,"name":"address","nodeType":"ElementaryTypeName","src":"2438:15:95","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":60721,"mutability":"mutable","name":"amount","nameLocation":"2473:6:95","nodeType":"VariableDeclaration","scope":60750,"src":"2465:14:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60720,"name":"uint256","nodeType":"ElementaryTypeName","src":"2465:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2437:43:95"},"returnParameters":{"id":60723,"nodeType":"ParameterList","parameters":[],"src":"2490:0:95"},"scope":60993,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":60767,"nodeType":"FunctionDefinition","src":"3481:173:95","nodes":[],"body":{"id":60766,"nodeType":"Block","src":"3570:84:95","nodes":[],"statements":[{"expression":{"arguments":[{"id":60761,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60753,"src":"3600:6:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60762,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60755,"src":"3608:4:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":60763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3614:32:95","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":60760,"name":"functionCall","nodeType":"Identifier","overloadedDeclarations":[60767,60787],"referencedDeclaration":60787,"src":"3587:12:95","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":60764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3587:60:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":60759,"id":60765,"nodeType":"Return","src":"3580:67:95"}]},"documentation":{"id":60751,"nodeType":"StructuredDocumentation","src":"2738:738:95","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:95","parameters":{"id":60756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60753,"mutability":"mutable","name":"target","nameLocation":"3511:6:95","nodeType":"VariableDeclaration","scope":60767,"src":"3503:14:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60752,"name":"address","nodeType":"ElementaryTypeName","src":"3503:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60755,"mutability":"mutable","name":"data","nameLocation":"3532:4:95","nodeType":"VariableDeclaration","scope":60767,"src":"3519:17:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60754,"name":"bytes","nodeType":"ElementaryTypeName","src":"3519:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3502:35:95"},"returnParameters":{"id":60759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60758,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60767,"src":"3556:12:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60757,"name":"bytes","nodeType":"ElementaryTypeName","src":"3556:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3555:14:95"},"scope":60993,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":60787,"nodeType":"FunctionDefinition","src":"3876:243:95","nodes":[],"body":{"id":60786,"nodeType":"Block","src":"4043:76:95","nodes":[],"statements":[{"expression":{"arguments":[{"id":60780,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60770,"src":"4082:6:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60781,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60772,"src":"4090:4:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":60782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4096:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":60783,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60774,"src":"4099:12:95","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":60779,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[60807,60857],"referencedDeclaration":60857,"src":"4060:21:95","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":60784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4060:52:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":60778,"id":60785,"nodeType":"Return","src":"4053:59:95"}]},"documentation":{"id":60768,"nodeType":"StructuredDocumentation","src":"3660:211:95","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:95","parameters":{"id":60775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60770,"mutability":"mutable","name":"target","nameLocation":"3915:6:95","nodeType":"VariableDeclaration","scope":60787,"src":"3907:14:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60769,"name":"address","nodeType":"ElementaryTypeName","src":"3907:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60772,"mutability":"mutable","name":"data","nameLocation":"3944:4:95","nodeType":"VariableDeclaration","scope":60787,"src":"3931:17:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60771,"name":"bytes","nodeType":"ElementaryTypeName","src":"3931:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":60774,"mutability":"mutable","name":"errorMessage","nameLocation":"3972:12:95","nodeType":"VariableDeclaration","scope":60787,"src":"3958:26:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":60773,"name":"string","nodeType":"ElementaryTypeName","src":"3958:6:95","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3897:93:95"},"returnParameters":{"id":60778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60777,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60787,"src":"4025:12:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60776,"name":"bytes","nodeType":"ElementaryTypeName","src":"4025:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4024:14:95"},"scope":60993,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":60807,"nodeType":"FunctionDefinition","src":"4481:224:95","nodes":[],"body":{"id":60806,"nodeType":"Block","src":"4594:111:95","nodes":[],"statements":[{"expression":{"arguments":[{"id":60800,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60790,"src":"4633:6:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60801,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60792,"src":"4641:4:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":60802,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60794,"src":"4647:5:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":60803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4654:43:95","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":60799,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[60807,60857],"referencedDeclaration":60857,"src":"4611:21:95","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":60804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4611:87:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":60798,"id":60805,"nodeType":"Return","src":"4604:94:95"}]},"documentation":{"id":60788,"nodeType":"StructuredDocumentation","src":"4125:351:95","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:95","parameters":{"id":60795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60790,"mutability":"mutable","name":"target","nameLocation":"4520:6:95","nodeType":"VariableDeclaration","scope":60807,"src":"4512:14:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60789,"name":"address","nodeType":"ElementaryTypeName","src":"4512:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60792,"mutability":"mutable","name":"data","nameLocation":"4541:4:95","nodeType":"VariableDeclaration","scope":60807,"src":"4528:17:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60791,"name":"bytes","nodeType":"ElementaryTypeName","src":"4528:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":60794,"mutability":"mutable","name":"value","nameLocation":"4555:5:95","nodeType":"VariableDeclaration","scope":60807,"src":"4547:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60793,"name":"uint256","nodeType":"ElementaryTypeName","src":"4547:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4511:50:95"},"returnParameters":{"id":60798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60797,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60807,"src":"4580:12:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60796,"name":"bytes","nodeType":"ElementaryTypeName","src":"4580:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4579:14:95"},"scope":60993,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":60857,"nodeType":"FunctionDefinition","src":"4953:521:95","nodes":[],"body":{"id":60856,"nodeType":"Block","src":"5152:322:95","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":60824,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5178:4:95","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$60993","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$60993","typeString":"library Address"}],"id":60823,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5170:7:95","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":60822,"name":"address","nodeType":"ElementaryTypeName","src":"5170:7:95","typeDescriptions":{}}},"id":60825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5170:13:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5184:7:95","memberName":"balance","nodeType":"MemberAccess","src":"5170:21:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":60827,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60814,"src":"5195:5:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5170:30:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":60829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5202:40:95","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":60821,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5162:7:95","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":60830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5162:81:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60831,"nodeType":"ExpressionStatement","src":"5162:81:95"},{"expression":{"arguments":[{"arguments":[{"id":60834,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60810,"src":"5272:6:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60833,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60716,"src":"5261:10:95","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":60835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5261:18:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":60836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5281:31:95","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":60832,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5253:7:95","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":60837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5253:60:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60838,"nodeType":"ExpressionStatement","src":"5253:60:95"},{"assignments":[60840,60842],"declarations":[{"constant":false,"id":60840,"mutability":"mutable","name":"success","nameLocation":"5330:7:95","nodeType":"VariableDeclaration","scope":60856,"src":"5325:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":60839,"name":"bool","nodeType":"ElementaryTypeName","src":"5325:4:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":60842,"mutability":"mutable","name":"returndata","nameLocation":"5352:10:95","nodeType":"VariableDeclaration","scope":60856,"src":"5339:23:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60841,"name":"bytes","nodeType":"ElementaryTypeName","src":"5339:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":60849,"initialValue":{"arguments":[{"id":60847,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60812,"src":"5394:4:95","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":60843,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60810,"src":"5366:6:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5373:4:95","memberName":"call","nodeType":"MemberAccess","src":"5366:11:95","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":60846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":60845,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60814,"src":"5386:5:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5366:27:95","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":60848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5366:33:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5324:75:95"},{"expression":{"arguments":[{"id":60851,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60840,"src":"5433:7:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":60852,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60842,"src":"5442:10:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":60853,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60816,"src":"5454:12:95","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":60850,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60992,"src":"5416:16:95","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":60854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5416:51:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":60820,"id":60855,"nodeType":"Return","src":"5409:58:95"}]},"documentation":{"id":60808,"nodeType":"StructuredDocumentation","src":"4711:237:95","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:95","parameters":{"id":60817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60810,"mutability":"mutable","name":"target","nameLocation":"5001:6:95","nodeType":"VariableDeclaration","scope":60857,"src":"4993:14:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60809,"name":"address","nodeType":"ElementaryTypeName","src":"4993:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60812,"mutability":"mutable","name":"data","nameLocation":"5030:4:95","nodeType":"VariableDeclaration","scope":60857,"src":"5017:17:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60811,"name":"bytes","nodeType":"ElementaryTypeName","src":"5017:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":60814,"mutability":"mutable","name":"value","nameLocation":"5052:5:95","nodeType":"VariableDeclaration","scope":60857,"src":"5044:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60813,"name":"uint256","nodeType":"ElementaryTypeName","src":"5044:7:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":60816,"mutability":"mutable","name":"errorMessage","nameLocation":"5081:12:95","nodeType":"VariableDeclaration","scope":60857,"src":"5067:26:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":60815,"name":"string","nodeType":"ElementaryTypeName","src":"5067:6:95","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4983:116:95"},"returnParameters":{"id":60820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60819,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60857,"src":"5134:12:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60818,"name":"bytes","nodeType":"ElementaryTypeName","src":"5134:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5133:14:95"},"scope":60993,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":60874,"nodeType":"FunctionDefinition","src":"5651:197:95","nodes":[],"body":{"id":60873,"nodeType":"Block","src":"5751:97:95","nodes":[],"statements":[{"expression":{"arguments":[{"id":60868,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60860,"src":"5787:6:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60869,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60862,"src":"5795:4:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":60870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5801:39:95","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":60867,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[60874,60909],"referencedDeclaration":60909,"src":"5768:18:95","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":60871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5768:73:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":60866,"id":60872,"nodeType":"Return","src":"5761:80:95"}]},"documentation":{"id":60858,"nodeType":"StructuredDocumentation","src":"5480:166:95","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:95","parameters":{"id":60863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60860,"mutability":"mutable","name":"target","nameLocation":"5687:6:95","nodeType":"VariableDeclaration","scope":60874,"src":"5679:14:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60859,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60862,"mutability":"mutable","name":"data","nameLocation":"5708:4:95","nodeType":"VariableDeclaration","scope":60874,"src":"5695:17:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60861,"name":"bytes","nodeType":"ElementaryTypeName","src":"5695:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5678:35:95"},"returnParameters":{"id":60866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60865,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60874,"src":"5737:12:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60864,"name":"bytes","nodeType":"ElementaryTypeName","src":"5737:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5736:14:95"},"scope":60993,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":60909,"nodeType":"FunctionDefinition","src":"6032:414:95","nodes":[],"body":{"id":60908,"nodeType":"Block","src":"6218:228:95","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":60888,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60877,"src":"6247:6:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60887,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60716,"src":"6236:10:95","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":60889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6236:18:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374","id":60890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6256:38:95","typeDescriptions":{"typeIdentifier":"t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9","typeString":"literal_string \"Address: static call to non-contract\""},"value":"Address: static call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9","typeString":"literal_string \"Address: static call to non-contract\""}],"id":60886,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6228:7:95","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":60891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6228:67:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60892,"nodeType":"ExpressionStatement","src":"6228:67:95"},{"assignments":[60894,60896],"declarations":[{"constant":false,"id":60894,"mutability":"mutable","name":"success","nameLocation":"6312:7:95","nodeType":"VariableDeclaration","scope":60908,"src":"6307:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":60893,"name":"bool","nodeType":"ElementaryTypeName","src":"6307:4:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":60896,"mutability":"mutable","name":"returndata","nameLocation":"6334:10:95","nodeType":"VariableDeclaration","scope":60908,"src":"6321:23:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60895,"name":"bytes","nodeType":"ElementaryTypeName","src":"6321:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":60901,"initialValue":{"arguments":[{"id":60899,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60879,"src":"6366:4:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":60897,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60877,"src":"6348:6:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6355:10:95","memberName":"staticcall","nodeType":"MemberAccess","src":"6348:17:95","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":60900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6348:23:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6306:65:95"},{"expression":{"arguments":[{"id":60903,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60894,"src":"6405:7:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":60904,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60896,"src":"6414:10:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":60905,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60881,"src":"6426:12:95","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":60902,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60992,"src":"6388:16:95","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":60906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6388:51:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":60885,"id":60907,"nodeType":"Return","src":"6381:58:95"}]},"documentation":{"id":60875,"nodeType":"StructuredDocumentation","src":"5854:173:95","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6041:18:95","parameters":{"id":60882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60877,"mutability":"mutable","name":"target","nameLocation":"6077:6:95","nodeType":"VariableDeclaration","scope":60909,"src":"6069:14:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60876,"name":"address","nodeType":"ElementaryTypeName","src":"6069:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60879,"mutability":"mutable","name":"data","nameLocation":"6106:4:95","nodeType":"VariableDeclaration","scope":60909,"src":"6093:17:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60878,"name":"bytes","nodeType":"ElementaryTypeName","src":"6093:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":60881,"mutability":"mutable","name":"errorMessage","nameLocation":"6134:12:95","nodeType":"VariableDeclaration","scope":60909,"src":"6120:26:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":60880,"name":"string","nodeType":"ElementaryTypeName","src":"6120:6:95","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6059:93:95"},"returnParameters":{"id":60885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60884,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60909,"src":"6200:12:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60883,"name":"bytes","nodeType":"ElementaryTypeName","src":"6200:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6199:14:95"},"scope":60993,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":60926,"nodeType":"FunctionDefinition","src":"6625:198:95","nodes":[],"body":{"id":60925,"nodeType":"Block","src":"6722:101:95","nodes":[],"statements":[{"expression":{"arguments":[{"id":60920,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60912,"src":"6760:6:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60921,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60914,"src":"6768:4:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":60922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6774:41:95","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":60919,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[60926,60961],"referencedDeclaration":60961,"src":"6739:20:95","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":60923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6739:77:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":60918,"id":60924,"nodeType":"Return","src":"6732:84:95"}]},"documentation":{"id":60910,"nodeType":"StructuredDocumentation","src":"6452:168:95","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6634:20:95","parameters":{"id":60915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60912,"mutability":"mutable","name":"target","nameLocation":"6663:6:95","nodeType":"VariableDeclaration","scope":60926,"src":"6655:14:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60911,"name":"address","nodeType":"ElementaryTypeName","src":"6655:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60914,"mutability":"mutable","name":"data","nameLocation":"6684:4:95","nodeType":"VariableDeclaration","scope":60926,"src":"6671:17:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60913,"name":"bytes","nodeType":"ElementaryTypeName","src":"6671:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6654:35:95"},"returnParameters":{"id":60918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60917,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60926,"src":"6708:12:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60916,"name":"bytes","nodeType":"ElementaryTypeName","src":"6708:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6707:14:95"},"scope":60993,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":60961,"nodeType":"FunctionDefinition","src":"7009:407:95","nodes":[],"body":{"id":60960,"nodeType":"Block","src":"7184:232:95","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":60940,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60929,"src":"7213:6:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60939,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60716,"src":"7202:10:95","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":60941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7202:18:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374","id":60942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7222:40:95","typeDescriptions":{"typeIdentifier":"t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","typeString":"literal_string \"Address: delegate call to non-contract\""},"value":"Address: delegate call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","typeString":"literal_string \"Address: delegate call to non-contract\""}],"id":60938,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7194:7:95","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":60943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7194:69:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60944,"nodeType":"ExpressionStatement","src":"7194:69:95"},{"assignments":[60946,60948],"declarations":[{"constant":false,"id":60946,"mutability":"mutable","name":"success","nameLocation":"7280:7:95","nodeType":"VariableDeclaration","scope":60960,"src":"7275:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":60945,"name":"bool","nodeType":"ElementaryTypeName","src":"7275:4:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":60948,"mutability":"mutable","name":"returndata","nameLocation":"7302:10:95","nodeType":"VariableDeclaration","scope":60960,"src":"7289:23:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60947,"name":"bytes","nodeType":"ElementaryTypeName","src":"7289:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":60953,"initialValue":{"arguments":[{"id":60951,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60931,"src":"7336:4:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":60949,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60929,"src":"7316:6:95","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7323:12:95","memberName":"delegatecall","nodeType":"MemberAccess","src":"7316:19:95","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":60952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7316:25:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7274:67:95"},{"expression":{"arguments":[{"id":60955,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60946,"src":"7375:7:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":60956,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60948,"src":"7384:10:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":60957,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60933,"src":"7396:12:95","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":60954,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60992,"src":"7358:16:95","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":60958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7358:51:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":60937,"id":60959,"nodeType":"Return","src":"7351:58:95"}]},"documentation":{"id":60927,"nodeType":"StructuredDocumentation","src":"6829:175:95","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7018:20:95","parameters":{"id":60934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60929,"mutability":"mutable","name":"target","nameLocation":"7056:6:95","nodeType":"VariableDeclaration","scope":60961,"src":"7048:14:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60928,"name":"address","nodeType":"ElementaryTypeName","src":"7048:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60931,"mutability":"mutable","name":"data","nameLocation":"7085:4:95","nodeType":"VariableDeclaration","scope":60961,"src":"7072:17:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60930,"name":"bytes","nodeType":"ElementaryTypeName","src":"7072:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":60933,"mutability":"mutable","name":"errorMessage","nameLocation":"7113:12:95","nodeType":"VariableDeclaration","scope":60961,"src":"7099:26:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":60932,"name":"string","nodeType":"ElementaryTypeName","src":"7099:6:95","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7038:93:95"},"returnParameters":{"id":60937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60936,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60961,"src":"7166:12:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60935,"name":"bytes","nodeType":"ElementaryTypeName","src":"7166:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7165:14:95"},"scope":60993,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":60992,"nodeType":"FunctionDefinition","src":"7636:770:95","nodes":[],"body":{"id":60991,"nodeType":"Block","src":"7824:582:95","nodes":[],"statements":[{"condition":{"id":60973,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60964,"src":"7838:7:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":60989,"nodeType":"Block","src":"7895:505:95","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":60977,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60966,"src":"7979:10:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":60978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7990:6:95","memberName":"length","nodeType":"MemberAccess","src":"7979:17:95","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":60979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7999:1:95","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7979:21:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":60987,"nodeType":"Block","src":"8337:53:95","statements":[{"expression":{"arguments":[{"id":60984,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60968,"src":"8362:12:95","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":60983,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"8355:6:95","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":60985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8355:20:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60986,"nodeType":"ExpressionStatement","src":"8355:20:95"}]},"id":60988,"nodeType":"IfStatement","src":"7975:415:95","trueBody":{"id":60982,"nodeType":"Block","src":"8002:329:95","statements":[{"AST":{"nativeSrc":"8172:145:95","nodeType":"YulBlock","src":"8172:145:95","statements":[{"nativeSrc":"8194:40:95","nodeType":"YulVariableDeclaration","src":"8194:40:95","value":{"arguments":[{"name":"returndata","nativeSrc":"8223:10:95","nodeType":"YulIdentifier","src":"8223:10:95"}],"functionName":{"name":"mload","nativeSrc":"8217:5:95","nodeType":"YulIdentifier","src":"8217:5:95"},"nativeSrc":"8217:17:95","nodeType":"YulFunctionCall","src":"8217:17:95"},"variables":[{"name":"returndata_size","nativeSrc":"8198:15:95","nodeType":"YulTypedName","src":"8198:15:95","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8266:2:95","nodeType":"YulLiteral","src":"8266:2:95","type":"","value":"32"},{"name":"returndata","nativeSrc":"8270:10:95","nodeType":"YulIdentifier","src":"8270:10:95"}],"functionName":{"name":"add","nativeSrc":"8262:3:95","nodeType":"YulIdentifier","src":"8262:3:95"},"nativeSrc":"8262:19:95","nodeType":"YulFunctionCall","src":"8262:19:95"},{"name":"returndata_size","nativeSrc":"8283:15:95","nodeType":"YulIdentifier","src":"8283:15:95"}],"functionName":{"name":"revert","nativeSrc":"8255:6:95","nodeType":"YulIdentifier","src":"8255:6:95"},"nativeSrc":"8255:44:95","nodeType":"YulFunctionCall","src":"8255:44:95"},"nativeSrc":"8255:44:95","nodeType":"YulExpressionStatement","src":"8255:44:95"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":60966,"isOffset":false,"isSlot":false,"src":"8223:10:95","valueSize":1},{"declaration":60966,"isOffset":false,"isSlot":false,"src":"8270:10:95","valueSize":1}],"id":60981,"nodeType":"InlineAssembly","src":"8163:154:95"}]}}]},"id":60990,"nodeType":"IfStatement","src":"7834:566:95","trueBody":{"id":60976,"nodeType":"Block","src":"7847:42:95","statements":[{"expression":{"id":60974,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60966,"src":"7868:10:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":60972,"id":60975,"nodeType":"Return","src":"7861:17:95"}]}}]},"documentation":{"id":60962,"nodeType":"StructuredDocumentation","src":"7422:209:95","text":" @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason using the provided one.\n _Available since v4.3._"},"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"7645:16:95","parameters":{"id":60969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60964,"mutability":"mutable","name":"success","nameLocation":"7676:7:95","nodeType":"VariableDeclaration","scope":60992,"src":"7671:12:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":60963,"name":"bool","nodeType":"ElementaryTypeName","src":"7671:4:95","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":60966,"mutability":"mutable","name":"returndata","nameLocation":"7706:10:95","nodeType":"VariableDeclaration","scope":60992,"src":"7693:23:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60965,"name":"bytes","nodeType":"ElementaryTypeName","src":"7693:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":60968,"mutability":"mutable","name":"errorMessage","nameLocation":"7740:12:95","nodeType":"VariableDeclaration","scope":60992,"src":"7726:26:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":60967,"name":"string","nodeType":"ElementaryTypeName","src":"7726:6:95","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7661:97:95"},"returnParameters":{"id":60972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60992,"src":"7806:12:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":60970,"name":"bytes","nodeType":"ElementaryTypeName","src":"7806:5:95","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7805:14:95"},"scope":60993,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":60701,"nodeType":"StructuredDocumentation","src":"126:67:95","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"linearizedBaseContracts":[60993],"name":"Address","nameLocation":"202:7:95","scope":60994,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":95}