polytone-evm 0.3.0

Core interfaces for Polytone Interchain accounts and queries.
Documentation
1
{"abi":[],"bytecode":{"object":"0x60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea264697066735822122090b8548353c7923ad24734dc8ad034f661c99b696705a7bb042818b26e6a289a64736f6c63430008180033","sourceMap":"770:18068:49:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x600080fdfea264697066735822122090b8548353c7923ad24734dc8ad034f661c99b696705a7bb042818b26e6a289a64736f6c63430008180033","sourceMap":"770:18068:49:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Internal helper methods to validate/deploy implementations and perform upgrades. WARNING: DO NOT USE DIRECTLY. Use Upgrades.sol, LegacyUpgrades.sol or Defender.sol instead.\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the proxy. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\"},\"BEACON_SLOT\":{\"details\":\"Storage slot with the UpgradeableBeacon contract which defines the implementation for the proxy. This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\"},\"IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-foundry-upgrades/src/internal/Core.sol\":\"Core\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"],\"viaIR\":true},\"sources\":{\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xfd9e719ff0673fdd8ff83bbe72ee8cae0273d61937d27fde5d9159d9849233f4\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://b14aaef0d76f2e5257e4e3ab33895d5260d4c7707ff4d37fea1f31d25c8684a8\",\"dweb:/ipfs/QmRd6BMh4FNDPW8Niy4TU2XrtKqAc6GRTfw8xjSwpQ42Gy\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0xf61cb43a94d8318049d0a7f567af8c0aa952b5762a43851b130b90b3fcde0c6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53a52c6c3aeb22f7a18f53fca16af590308a8e3e5507e74df9b8e2561c932194\",\"dweb:/ipfs/QmaaXuY8mC66YoE2xyZdWuLHXqAxLjbnNxiofx8BTP1MRn\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/src/strings.sol\":{\"keccak256\":\"0x42cad11a7033f2fe05dd68611d2304407a620ac985b91edf29d5868cfe196223\",\"urls\":[\"bzz-raw://3cbc2333234e1f00eab5e57c4bcaf5115661e5e066a17c70af587a0a96f24669\",\"dweb:/ipfs/QmPHvStqcvZL46LW5N2ExTwAaqNhRCcmAX66aR6oE1WDar\"]},\"lib/openzeppelin-foundry-upgrades/src/Defender.sol\":{\"keccak256\":\"0x2114e4d70d53b36e8cec54ba11ff78d9f38a466ec3504c76c7f26101a7cff37f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://58f4d9bc58646e7631b263cdb8ef260e6818e9f716036d81d1c18218c9557a23\",\"dweb:/ipfs/QmS18L4R4gPtay9eQBcR28DnwmBkGSWsiCFwm2tXc3BkHL\"]},\"lib/openzeppelin-foundry-upgrades/src/Options.sol\":{\"keccak256\":\"0xa5414683d6b219b28e75ecaab3d00a305dfaf4d970389a88992275c8072ce8ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1dbfd566ba318f2b740159c28e4511c84c9d76fcc293ae17c9b1a87b3ea16c9\",\"dweb:/ipfs/QmcyxPoeBdzA9iHEgd76xKhaQ8HKfpV4owdSv6127MmveT\"]},\"lib/openzeppelin-foundry-upgrades/src/internal/Core.sol\":{\"keccak256\":\"0x37073df20d2b5fbb0a873e6b2dd76c23e23455d1c2d2ba57d2f0998201a4251d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79d507647ea48d93371341684cf4199d55ed799db9d3489bc016f53990d2ff7c\",\"dweb:/ipfs/QmQWgXiYcPcwNcrkTHb72WtHd4xPcXfRUMfBrhkDHgr2ut\"]},\"lib/openzeppelin-foundry-upgrades/src/internal/DefenderDeploy.sol\":{\"keccak256\":\"0x868ffdaf5d185fee103fc4581385392b47c209a5cfd2aec01f0307dbc0101d73\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://76e51bf69a4d0b5d1d9cfa7efa442bdcf9d713966563432ef8fdd00ec959a25e\",\"dweb:/ipfs/QmTHkdvMnqmEvus7zbmHhPkWk3fM9SW2Jq8gnyBLwVJtxG\"]},\"lib/openzeppelin-foundry-upgrades/src/internal/Utils.sol\":{\"keccak256\":\"0x4de002af810f6a5fe26a6381e0ead3331735bd0059434a22df75e17c177b5f87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af32ff07f606e530a53030db141a75af144cfe065a6543939d412018c6159540\",\"dweb:/ipfs/QmbfTB92Zd8VQHW61g9dx1CvGgSL5SCoZDLrvJfnR7Ctio\"]},\"lib/openzeppelin-foundry-upgrades/src/internal/Versions.sol\":{\"keccak256\":\"0xf1a1441c18a296853509e9b1d18be794ed3de836caea49d6948b5e9ac566e8c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f3463514235bd875ecacf45f95cac64aa650dd38d05c15fe1f4203b6b5733bd\",\"dweb:/ipfs/Qmcbhmw9NPkG8MqiVsQ4qUupeQFCRgyBDKuoUwohwa8EP3\"]},\"lib/openzeppelin-foundry-upgrades/src/internal/interfaces/IProxyAdmin.sol\":{\"keccak256\":\"0xf5e514595089f8959da130507086e7388602a71ce60575d141e7d892dfbddbfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b41366e2823ccc8cb42304496d761b3df80946d17384634a61afd7139495c91\",\"dweb:/ipfs/QmZE2nRMxax1NPj63ifemKdScGJzKNWi7BCGudjFLsUz1y\"]},\"lib/openzeppelin-foundry-upgrades/src/internal/interfaces/IUpgradeableBeacon.sol\":{\"keccak256\":\"0xa8d7bffdd26eb763e459650c83f247b54af79800c2df52ad05878f238fc1c2f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed47f1e53e5eb7d48fed60a414755641fca8fa0e713fd503b2597227da78a2f\",\"dweb:/ipfs/QmQr8A5wddHdhQNauFShXxRkPcuVVpVsYpq846WhmFC8Tv\"]},\"lib/openzeppelin-foundry-upgrades/src/internal/interfaces/IUpgradeableProxy.sol\":{\"keccak256\":\"0x781b564b90bba0c0e8e12fb66b1c910f42d369db469f2e88592b4cff29de99a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45fcab02a43fde934445b88e905aba3f58a70b75dd6ee6eb86a3d593424aeb03\",\"dweb:/ipfs/QmXmhAgrctaYUDLoTRgUjwD4deoXu1E2QT1kftVGcVa56j\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-foundry-upgrades/src/internal/Core.sol":"Core"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"lib/forge-std/src/Vm.sol":{"keccak256":"0xfd9e719ff0673fdd8ff83bbe72ee8cae0273d61937d27fde5d9159d9849233f4","urls":["bzz-raw://b14aaef0d76f2e5257e4e3ab33895d5260d4c7707ff4d37fea1f31d25c8684a8","dweb:/ipfs/QmRd6BMh4FNDPW8Niy4TU2XrtKqAc6GRTfw8xjSwpQ42Gy"],"license":"MIT OR Apache-2.0"},"lib/forge-std/src/console.sol":{"keccak256":"0xf61cb43a94d8318049d0a7f567af8c0aa952b5762a43851b130b90b3fcde0c6a","urls":["bzz-raw://53a52c6c3aeb22f7a18f53fca16af590308a8e3e5507e74df9b8e2561c932194","dweb:/ipfs/QmaaXuY8mC66YoE2xyZdWuLHXqAxLjbnNxiofx8BTP1MRn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/src/strings.sol":{"keccak256":"0x42cad11a7033f2fe05dd68611d2304407a620ac985b91edf29d5868cfe196223","urls":["bzz-raw://3cbc2333234e1f00eab5e57c4bcaf5115661e5e066a17c70af587a0a96f24669","dweb:/ipfs/QmPHvStqcvZL46LW5N2ExTwAaqNhRCcmAX66aR6oE1WDar"],"license":null},"lib/openzeppelin-foundry-upgrades/src/Defender.sol":{"keccak256":"0x2114e4d70d53b36e8cec54ba11ff78d9f38a466ec3504c76c7f26101a7cff37f","urls":["bzz-raw://58f4d9bc58646e7631b263cdb8ef260e6818e9f716036d81d1c18218c9557a23","dweb:/ipfs/QmS18L4R4gPtay9eQBcR28DnwmBkGSWsiCFwm2tXc3BkHL"],"license":"MIT"},"lib/openzeppelin-foundry-upgrades/src/Options.sol":{"keccak256":"0xa5414683d6b219b28e75ecaab3d00a305dfaf4d970389a88992275c8072ce8ac","urls":["bzz-raw://b1dbfd566ba318f2b740159c28e4511c84c9d76fcc293ae17c9b1a87b3ea16c9","dweb:/ipfs/QmcyxPoeBdzA9iHEgd76xKhaQ8HKfpV4owdSv6127MmveT"],"license":"MIT"},"lib/openzeppelin-foundry-upgrades/src/internal/Core.sol":{"keccak256":"0x37073df20d2b5fbb0a873e6b2dd76c23e23455d1c2d2ba57d2f0998201a4251d","urls":["bzz-raw://79d507647ea48d93371341684cf4199d55ed799db9d3489bc016f53990d2ff7c","dweb:/ipfs/QmQWgXiYcPcwNcrkTHb72WtHd4xPcXfRUMfBrhkDHgr2ut"],"license":"MIT"},"lib/openzeppelin-foundry-upgrades/src/internal/DefenderDeploy.sol":{"keccak256":"0x868ffdaf5d185fee103fc4581385392b47c209a5cfd2aec01f0307dbc0101d73","urls":["bzz-raw://76e51bf69a4d0b5d1d9cfa7efa442bdcf9d713966563432ef8fdd00ec959a25e","dweb:/ipfs/QmTHkdvMnqmEvus7zbmHhPkWk3fM9SW2Jq8gnyBLwVJtxG"],"license":"MIT"},"lib/openzeppelin-foundry-upgrades/src/internal/Utils.sol":{"keccak256":"0x4de002af810f6a5fe26a6381e0ead3331735bd0059434a22df75e17c177b5f87","urls":["bzz-raw://af32ff07f606e530a53030db141a75af144cfe065a6543939d412018c6159540","dweb:/ipfs/QmbfTB92Zd8VQHW61g9dx1CvGgSL5SCoZDLrvJfnR7Ctio"],"license":"MIT"},"lib/openzeppelin-foundry-upgrades/src/internal/Versions.sol":{"keccak256":"0xf1a1441c18a296853509e9b1d18be794ed3de836caea49d6948b5e9ac566e8c6","urls":["bzz-raw://6f3463514235bd875ecacf45f95cac64aa650dd38d05c15fe1f4203b6b5733bd","dweb:/ipfs/Qmcbhmw9NPkG8MqiVsQ4qUupeQFCRgyBDKuoUwohwa8EP3"],"license":"MIT"},"lib/openzeppelin-foundry-upgrades/src/internal/interfaces/IProxyAdmin.sol":{"keccak256":"0xf5e514595089f8959da130507086e7388602a71ce60575d141e7d892dfbddbfc","urls":["bzz-raw://9b41366e2823ccc8cb42304496d761b3df80946d17384634a61afd7139495c91","dweb:/ipfs/QmZE2nRMxax1NPj63ifemKdScGJzKNWi7BCGudjFLsUz1y"],"license":"MIT"},"lib/openzeppelin-foundry-upgrades/src/internal/interfaces/IUpgradeableBeacon.sol":{"keccak256":"0xa8d7bffdd26eb763e459650c83f247b54af79800c2df52ad05878f238fc1c2f8","urls":["bzz-raw://8ed47f1e53e5eb7d48fed60a414755641fca8fa0e713fd503b2597227da78a2f","dweb:/ipfs/QmQr8A5wddHdhQNauFShXxRkPcuVVpVsYpq846WhmFC8Tv"],"license":"MIT"},"lib/openzeppelin-foundry-upgrades/src/internal/interfaces/IUpgradeableProxy.sol":{"keccak256":"0x781b564b90bba0c0e8e12fb66b1c910f42d369db469f2e88592b4cff29de99a5","urls":["bzz-raw://45fcab02a43fde934445b88e905aba3f58a70b75dd6ee6eb86a3d593424aeb03","dweb:/ipfs/QmXmhAgrctaYUDLoTRgUjwD4deoXu1E2QT1kftVGcVa56j"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"lib/openzeppelin-foundry-upgrades/src/internal/Core.sol","id":42909,"exportedSymbols":{"Core":[42908],"DefenderDeploy":[44387],"IProxyAdmin":[45180],"IUpgradeableBeacon":[45189],"IUpgradeableProxy":[45206],"Options":[41160],"Utils":[45150],"Versions":[45159],"Vm":[12362],"console":[20486],"strings":[40971]},"nodeType":"SourceUnit","src":"32:18807:49","nodes":[{"id":41925,"nodeType":"PragmaDirective","src":"32:23:49","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":41927,"nodeType":"ImportDirective","src":"57:36:49","nodes":[],"absolutePath":"lib/forge-std/src/Vm.sol","file":"forge-std/Vm.sol","nameLocation":"-1:-1:-1","scope":42909,"sourceUnit":12363,"symbolAliases":[{"foreign":{"id":41926,"name":"Vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12362,"src":"65:2:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41929,"nodeType":"ImportDirective","src":"94:46:49","nodes":[],"absolutePath":"lib/forge-std/src/console.sol","file":"forge-std/console.sol","nameLocation":"-1:-1:-1","scope":42909,"sourceUnit":20487,"symbolAliases":[{"foreign":{"id":41928,"name":"console","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20486,"src":"102:7:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41931,"nodeType":"ImportDirective","src":"141:61:49","nodes":[],"absolutePath":"lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/src/strings.sol","file":"solidity-stringutils/src/strings.sol","nameLocation":"-1:-1:-1","scope":42909,"sourceUnit":40972,"symbolAliases":[{"foreign":{"id":41930,"name":"strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40971,"src":"149:7:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41933,"nodeType":"ImportDirective","src":"204:39:49","nodes":[],"absolutePath":"lib/openzeppelin-foundry-upgrades/src/Options.sol","file":"../Options.sol","nameLocation":"-1:-1:-1","scope":42909,"sourceUnit":41190,"symbolAliases":[{"foreign":{"id":41932,"name":"Options","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41160,"src":"212:7:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41935,"nodeType":"ImportDirective","src":"244:40:49","nodes":[],"absolutePath":"lib/openzeppelin-foundry-upgrades/src/internal/Versions.sol","file":"./Versions.sol","nameLocation":"-1:-1:-1","scope":42909,"sourceUnit":45160,"symbolAliases":[{"foreign":{"id":41934,"name":"Versions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45159,"src":"252:8:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41937,"nodeType":"ImportDirective","src":"285:34:49","nodes":[],"absolutePath":"lib/openzeppelin-foundry-upgrades/src/internal/Utils.sol","file":"./Utils.sol","nameLocation":"-1:-1:-1","scope":42909,"sourceUnit":45151,"symbolAliases":[{"foreign":{"id":41936,"name":"Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45150,"src":"293:5:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41939,"nodeType":"ImportDirective","src":"320:52:49","nodes":[],"absolutePath":"lib/openzeppelin-foundry-upgrades/src/internal/DefenderDeploy.sol","file":"./DefenderDeploy.sol","nameLocation":"-1:-1:-1","scope":42909,"sourceUnit":44388,"symbolAliases":[{"foreign":{"id":41938,"name":"DefenderDeploy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44387,"src":"328:14:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41941,"nodeType":"ImportDirective","src":"374:69:49","nodes":[],"absolutePath":"lib/openzeppelin-foundry-upgrades/src/internal/interfaces/IUpgradeableProxy.sol","file":"./interfaces/IUpgradeableProxy.sol","nameLocation":"-1:-1:-1","scope":42909,"sourceUnit":45207,"symbolAliases":[{"foreign":{"id":41940,"name":"IUpgradeableProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45206,"src":"382:17:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41943,"nodeType":"ImportDirective","src":"444:57:49","nodes":[],"absolutePath":"lib/openzeppelin-foundry-upgrades/src/internal/interfaces/IProxyAdmin.sol","file":"./interfaces/IProxyAdmin.sol","nameLocation":"-1:-1:-1","scope":42909,"sourceUnit":45181,"symbolAliases":[{"foreign":{"id":41942,"name":"IProxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45180,"src":"452:11:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41945,"nodeType":"ImportDirective","src":"502:71:49","nodes":[],"absolutePath":"lib/openzeppelin-foundry-upgrades/src/internal/interfaces/IUpgradeableBeacon.sol","file":"./interfaces/IUpgradeableBeacon.sol","nameLocation":"-1:-1:-1","scope":42909,"sourceUnit":45190,"symbolAliases":[{"foreign":{"id":41944,"name":"IUpgradeableBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45189,"src":"510:18:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":42908,"nodeType":"ContractDefinition","src":"770:18068:49","nodes":[{"id":41973,"nodeType":"FunctionDefinition","src":"1526:229:49","nodes":[],"body":{"id":41972,"nodeType":"Block","src":"1640:115:49","nodes":[],"statements":[{"assignments":[41960],"declarations":[{"constant":false,"id":41960,"mutability":"mutable","name":"newImpl","nameLocation":"1658:7:49","nodeType":"VariableDeclaration","scope":41972,"src":"1650:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41959,"name":"address","nodeType":"ElementaryTypeName","src":"1650:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":41965,"initialValue":{"arguments":[{"id":41962,"name":"contractName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41951,"src":"1683:12:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":41963,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41956,"src":"1697:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}],"id":41961,"name":"prepareUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42308,"src":"1668:14:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_struct$_Options_$41160_memory_ptr_$returns$_t_address_$","typeString":"function (string memory,struct Options memory) returns (address)"}},"id":41964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1668:34:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1650:52:49"},{"expression":{"arguments":[{"id":41967,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41949,"src":"1727:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":41968,"name":"newImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41960,"src":"1734:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":41969,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41953,"src":"1743:4:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":41966,"name":"upgradeProxyTo","nodeType":"Identifier","overloadedDeclarations":[42124,42146],"referencedDeclaration":42124,"src":"1712:14:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,bytes memory)"}},"id":41970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1712:36:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41971,"nodeType":"ExpressionStatement","src":"1712:36:49"}]},"documentation":{"id":41947,"nodeType":"StructuredDocumentation","src":"789:732:49","text":" @dev Upgrades a proxy to a new implementation contract. Only supported for UUPS or transparent proxies.\n Requires that either the `referenceContract` option is set, or the new implementation contract has a `@custom:oz-upgrades-from <reference>` annotation.\n @param proxy Address of the proxy to upgrade\n @param contractName Name of the new implementation contract to upgrade to, e.g. \"MyContract.sol\" or \"MyContract.sol:MyContract\" or artifact path relative to the project root directory\n @param data Encoded call data of an arbitrary function to call during the upgrade process, or empty if no function needs to be called during the upgrade\n @param opts Common options"},"implemented":true,"kind":"function","modifiers":[],"name":"upgradeProxy","nameLocation":"1535:12:49","parameters":{"id":41957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41949,"mutability":"mutable","name":"proxy","nameLocation":"1556:5:49","nodeType":"VariableDeclaration","scope":41973,"src":"1548:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41948,"name":"address","nodeType":"ElementaryTypeName","src":"1548:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":41951,"mutability":"mutable","name":"contractName","nameLocation":"1577:12:49","nodeType":"VariableDeclaration","scope":41973,"src":"1563:26:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":41950,"name":"string","nodeType":"ElementaryTypeName","src":"1563:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":41953,"mutability":"mutable","name":"data","nameLocation":"1604:4:49","nodeType":"VariableDeclaration","scope":41973,"src":"1591:17:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":41952,"name":"bytes","nodeType":"ElementaryTypeName","src":"1591:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":41956,"mutability":"mutable","name":"opts","nameLocation":"1625:4:49","nodeType":"VariableDeclaration","scope":41973,"src":"1610:19:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options"},"typeName":{"id":41955,"nodeType":"UserDefinedTypeName","pathNode":{"id":41954,"name":"Options","nameLocations":["1610:7:49"],"nodeType":"IdentifierPath","referencedDeclaration":41160,"src":"1610:7:49"},"referencedDeclaration":41160,"src":"1610:7:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_storage_ptr","typeString":"struct Options"}},"visibility":"internal"}],"src":"1547:83:49"},"returnParameters":{"id":41958,"nodeType":"ParameterList","parameters":[],"src":"1640:0:49"},"scope":42908,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":41999,"nodeType":"FunctionDefinition","src":"2982:261:49","nodes":[],"body":{"id":41998,"nodeType":"Block","src":"3181:62:49","nodes":[],"statements":[{"expression":{"arguments":[{"id":41992,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41976,"src":"3204:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":41993,"name":"contractName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41978,"src":"3211:12:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":41994,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41980,"src":"3225:4:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":41995,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41983,"src":"3231:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}],"id":41991,"name":"upgradeProxy","nodeType":"Identifier","overloadedDeclarations":[41973,41999],"referencedDeclaration":41973,"src":"3191:12:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_Options_$41160_memory_ptr_$returns$__$","typeString":"function (address,string memory,bytes memory,struct Options memory)"}},"id":41996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3191:45:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41997,"nodeType":"ExpressionStatement","src":"3191:45:49"}]},"documentation":{"id":41974,"nodeType":"StructuredDocumentation","src":"1761:1216:49","text":" @notice For tests only. If broadcasting in scripts, use the `--sender <ADDRESS>` option with `forge script` instead.\n @dev Upgrades a proxy to a new implementation contract. Only supported for UUPS or transparent proxies.\n Requires that either the `referenceContract` option is set, or the new implementation contract has a `@custom:oz-upgrades-from <reference>` annotation.\n This function provides an additional `tryCaller` parameter to test an upgrade using a specific caller address.\n Use this if you encounter `OwnableUnauthorizedAccount` errors in your tests.\n @param proxy Address of the proxy to upgrade\n @param contractName Name of the new implementation contract to upgrade to, e.g. \"MyContract.sol\" or \"MyContract.sol:MyContract\" or artifact path relative to the project root directory\n @param data Encoded call data of an arbitrary function to call during the upgrade process, or empty if no function needs to be called during the upgrade\n @param opts Common options\n @param tryCaller Address to use as the caller of the upgrade function. This should be the address that owns the proxy or its ProxyAdmin."},"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":41988,"name":"tryCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41985,"src":"3170:9:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":41989,"kind":"modifierInvocation","modifierName":{"id":41987,"name":"tryPrank","nameLocations":["3161:8:49"],"nodeType":"IdentifierPath","referencedDeclaration":42446,"src":"3161:8:49"},"nodeType":"ModifierInvocation","src":"3161:19:49"}],"name":"upgradeProxy","nameLocation":"2991:12:49","parameters":{"id":41986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41976,"mutability":"mutable","name":"proxy","nameLocation":"3021:5:49","nodeType":"VariableDeclaration","scope":41999,"src":"3013:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41975,"name":"address","nodeType":"ElementaryTypeName","src":"3013:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":41978,"mutability":"mutable","name":"contractName","nameLocation":"3050:12:49","nodeType":"VariableDeclaration","scope":41999,"src":"3036:26:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":41977,"name":"string","nodeType":"ElementaryTypeName","src":"3036:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":41980,"mutability":"mutable","name":"data","nameLocation":"3085:4:49","nodeType":"VariableDeclaration","scope":41999,"src":"3072:17:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":41979,"name":"bytes","nodeType":"ElementaryTypeName","src":"3072:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":41983,"mutability":"mutable","name":"opts","nameLocation":"3114:4:49","nodeType":"VariableDeclaration","scope":41999,"src":"3099:19:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options"},"typeName":{"id":41982,"nodeType":"UserDefinedTypeName","pathNode":{"id":41981,"name":"Options","nameLocations":["3099:7:49"],"nodeType":"IdentifierPath","referencedDeclaration":41160,"src":"3099:7:49"},"referencedDeclaration":41160,"src":"3099:7:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_storage_ptr","typeString":"struct Options"}},"visibility":"internal"},{"constant":false,"id":41985,"mutability":"mutable","name":"tryCaller","nameLocation":"3136:9:49","nodeType":"VariableDeclaration","scope":41999,"src":"3128:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41984,"name":"address","nodeType":"ElementaryTypeName","src":"3128:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3003:148:49"},"returnParameters":{"id":41990,"nodeType":"ParameterList","parameters":[],"src":"3181:0:49"},"scope":42908,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":42124,"nodeType":"FunctionDefinition","src":"3674:1035:49","nodes":[],"body":{"id":42123,"nodeType":"Block","src":"3758:951:49","nodes":[],"statements":[{"assignments":[42011],"declarations":[{"constant":false,"id":42011,"mutability":"mutable","name":"vm","nameLocation":"3771:2:49","nodeType":"VariableDeclaration","scope":42123,"src":"3768:5:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"},"typeName":{"id":42010,"nodeType":"UserDefinedTypeName","pathNode":{"id":42009,"name":"Vm","nameLocations":["3768:2:49"],"nodeType":"IdentifierPath","referencedDeclaration":12362,"src":"3768:2:49"},"referencedDeclaration":12362,"src":"3768:2:49","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"}},"visibility":"internal"}],"id":42016,"initialValue":{"arguments":[{"expression":{"id":42013,"name":"Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45150,"src":"3779:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Utils_$45150_$","typeString":"type(library Utils)"}},"id":42014,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3785:17:49","memberName":"CHEATCODE_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":44410,"src":"3779:23:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42012,"name":"Vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12362,"src":"3776:2:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Vm_$12362_$","typeString":"type(contract Vm)"}},"id":42015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3776:27:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"}},"nodeType":"VariableDeclarationStatement","src":"3768:35:49"},{"assignments":[42018],"declarations":[{"constant":false,"id":42018,"mutability":"mutable","name":"adminSlot","nameLocation":"3822:9:49","nodeType":"VariableDeclaration","scope":42123,"src":"3814:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":42017,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3814:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":42024,"initialValue":{"arguments":[{"id":42021,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42002,"src":"3842:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42022,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42454,"src":"3849:10:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":42019,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42011,"src":"3834:2:49","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"}},"id":42020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3837:4:49","memberName":"load","nodeType":"MemberAccess","referencedDeclaration":9150,"src":"3834:7:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,bytes32) view external returns (bytes32)"}},"id":42023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3834:26:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3814:46:49"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":42030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42025,"name":"adminSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42018,"src":"3874:9:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":42028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3895:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":42027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3887:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":42026,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3887:7:49","typeDescriptions":{}}},"id":42029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3887:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3874:23:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":42121,"nodeType":"Block","src":"4272:431:49","statements":[{"assignments":[42070],"declarations":[{"constant":false,"id":42070,"mutability":"mutable","name":"admin","nameLocation":"4294:5:49","nodeType":"VariableDeclaration","scope":42121,"src":"4286:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42069,"name":"address","nodeType":"ElementaryTypeName","src":"4286:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":42081,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":42077,"name":"adminSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42018,"src":"4326:9:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":42076,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4318:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":42075,"name":"uint256","nodeType":"ElementaryTypeName","src":"4318:7:49","typeDescriptions":{}}},"id":42078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4318:18:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42074,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4310:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":42073,"name":"uint160","nodeType":"ElementaryTypeName","src":"4310:7:49","typeDescriptions":{}}},"id":42079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4310:27:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":42072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4302:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42071,"name":"address","nodeType":"ElementaryTypeName","src":"4302:7:49","typeDescriptions":{}}},"id":42080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4302:36:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4286:52:49"},{"assignments":[42083],"declarations":[{"constant":false,"id":42083,"mutability":"mutable","name":"upgradeInterfaceVersion","nameLocation":"4366:23:49","nodeType":"VariableDeclaration","scope":42121,"src":"4352:37:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":42082,"name":"string","nodeType":"ElementaryTypeName","src":"4352:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":42087,"initialValue":{"arguments":[{"id":42085,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42070,"src":"4420:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42084,"name":"_getUpgradeInterfaceVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42494,"src":"4392:27:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (address) returns (string memory)"}},"id":42086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4392:34:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"4352:74:49"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":42100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"hexValue":"352e302e30","id":42092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4485:7:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c","typeString":"literal_string \"5.0.0\""},"value":"5.0.0"},"id":42093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4493:7:49","memberName":"toSlice","nodeType":"MemberAccess","referencedDeclaration":39222,"src":"4485:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$39147_memory_ptr_$attached_to$_t_string_memory_ptr_$","typeString":"function (string memory) pure returns (struct strings.slice memory)"}},"id":42094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4485:17:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_slice_$39147_memory_ptr","typeString":"struct strings.slice memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$39147_memory_ptr","typeString":"struct strings.slice memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":42088,"name":"upgradeInterfaceVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42083,"src":"4444:23:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":42089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4468:7:49","memberName":"toSlice","nodeType":"MemberAccess","referencedDeclaration":39222,"src":"4444:31:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$39147_memory_ptr_$attached_to$_t_string_memory_ptr_$","typeString":"function (string memory) pure returns (struct strings.slice memory)"}},"id":42090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4444:33:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_slice_$39147_memory_ptr","typeString":"struct strings.slice memory"}},"id":42091,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4478:6:49","memberName":"equals","nodeType":"MemberAccess","referencedDeclaration":39705,"src":"4444:40:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_slice_$39147_memory_ptr_$_t_struct$_slice_$39147_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_slice_$39147_memory_ptr_$","typeString":"function (struct strings.slice memory,struct strings.slice memory) pure returns (bool)"}},"id":42095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4444:59:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":42096,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42006,"src":"4507:4:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":42097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4512:6:49","memberName":"length","nodeType":"MemberAccess","src":"4507:11:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":42098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4521:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4507:15:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4444:78:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":42119,"nodeType":"Block","src":"4618:75:49","statements":[{"expression":{"arguments":[{"id":42115,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42002,"src":"4663:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42116,"name":"newImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42004,"src":"4670:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":42112,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42070,"src":"4648:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42111,"name":"IProxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45180,"src":"4636:11:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProxyAdmin_$45180_$","typeString":"type(contract IProxyAdmin)"}},"id":42113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4636:18:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProxyAdmin_$45180","typeString":"contract IProxyAdmin"}},"id":42114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4655:7:49","memberName":"upgrade","nodeType":"MemberAccess","referencedDeclaration":45169,"src":"4636:26:49","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) external"}},"id":42117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4636:42:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42118,"nodeType":"ExpressionStatement","src":"4636:42:49"}]},"id":42120,"nodeType":"IfStatement","src":"4440:253:49","trueBody":{"id":42110,"nodeType":"Block","src":"4524:88:49","statements":[{"expression":{"arguments":[{"id":42105,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42002,"src":"4576:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42106,"name":"newImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42004,"src":"4583:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42107,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42006,"src":"4592:4:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":42102,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42070,"src":"4554:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42101,"name":"IProxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45180,"src":"4542:11:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IProxyAdmin_$45180_$","typeString":"type(contract IProxyAdmin)"}},"id":42103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4542:18:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProxyAdmin_$45180","typeString":"contract IProxyAdmin"}},"id":42104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4561:14:49","memberName":"upgradeAndCall","nodeType":"MemberAccess","referencedDeclaration":45179,"src":"4542:33:49","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,bytes memory) payable external"}},"id":42108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4542:55:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42109,"nodeType":"ExpressionStatement","src":"4542:55:49"}]}}]},"id":42122,"nodeType":"IfStatement","src":"3870:833:49","trueBody":{"id":42068,"nodeType":"Block","src":"3899:367:49","statements":[{"assignments":[42032],"declarations":[{"constant":false,"id":42032,"mutability":"mutable","name":"upgradeInterfaceVersion","nameLocation":"3927:23:49","nodeType":"VariableDeclaration","scope":42068,"src":"3913:37:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":42031,"name":"string","nodeType":"ElementaryTypeName","src":"3913:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":42036,"initialValue":{"arguments":[{"id":42034,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42002,"src":"3981:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42033,"name":"_getUpgradeInterfaceVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42494,"src":"3953:27:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (address) returns (string memory)"}},"id":42035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3953:34:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"3913:74:49"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":42049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"hexValue":"352e302e30","id":42041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4046:7:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c","typeString":"literal_string \"5.0.0\""},"value":"5.0.0"},"id":42042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4054:7:49","memberName":"toSlice","nodeType":"MemberAccess","referencedDeclaration":39222,"src":"4046:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$39147_memory_ptr_$attached_to$_t_string_memory_ptr_$","typeString":"function (string memory) pure returns (struct strings.slice memory)"}},"id":42043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4046:17:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_slice_$39147_memory_ptr","typeString":"struct strings.slice memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$39147_memory_ptr","typeString":"struct strings.slice memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":42037,"name":"upgradeInterfaceVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42032,"src":"4005:23:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":42038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4029:7:49","memberName":"toSlice","nodeType":"MemberAccess","referencedDeclaration":39222,"src":"4005:31:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$39147_memory_ptr_$attached_to$_t_string_memory_ptr_$","typeString":"function (string memory) pure returns (struct strings.slice memory)"}},"id":42039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4005:33:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_slice_$39147_memory_ptr","typeString":"struct strings.slice memory"}},"id":42040,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4039:6:49","memberName":"equals","nodeType":"MemberAccess","referencedDeclaration":39705,"src":"4005:40:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_slice_$39147_memory_ptr_$_t_struct$_slice_$39147_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_slice_$39147_memory_ptr_$","typeString":"function (struct strings.slice memory,struct strings.slice memory) pure returns (bool)"}},"id":42044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4005:59:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":42045,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42006,"src":"4068:4:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":42046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4073:6:49","memberName":"length","nodeType":"MemberAccess","src":"4068:11:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":42047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4082:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4068:15:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4005:78:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":42066,"nodeType":"Block","src":"4180:76:49","statements":[{"expression":{"arguments":[{"id":42063,"name":"newImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42004,"src":"4233:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":42060,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42002,"src":"4216:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42059,"name":"IUpgradeableProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45206,"src":"4198:17:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IUpgradeableProxy_$45206_$","typeString":"type(contract IUpgradeableProxy)"}},"id":42061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4198:24:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IUpgradeableProxy_$45206","typeString":"contract IUpgradeableProxy"}},"id":42062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4223:9:49","memberName":"upgradeTo","nodeType":"MemberAccess","referencedDeclaration":45197,"src":"4198:34:49","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":42064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4198:43:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42065,"nodeType":"ExpressionStatement","src":"4198:43:49"}]},"id":42067,"nodeType":"IfStatement","src":"4001:255:49","trueBody":{"id":42058,"nodeType":"Block","src":"4085:89:49","statements":[{"expression":{"arguments":[{"id":42054,"name":"newImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42004,"src":"4145:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42055,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42006,"src":"4154:4:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":42051,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42002,"src":"4121:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42050,"name":"IUpgradeableProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45206,"src":"4103:17:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IUpgradeableProxy_$45206_$","typeString":"type(contract IUpgradeableProxy)"}},"id":42052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4103:24:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IUpgradeableProxy_$45206","typeString":"contract IUpgradeableProxy"}},"id":42053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4128:16:49","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":45205,"src":"4103:41:49","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory) payable external"}},"id":42056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4103:56:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42057,"nodeType":"ExpressionStatement","src":"4103:56:49"}]}}]}}]},"documentation":{"id":42000,"nodeType":"StructuredDocumentation","src":"3249:420:49","text":" @dev Upgrades a proxy to a new implementation contract. Only supported for UUPS or transparent proxies.\n @param proxy Address of the proxy to upgrade\n @param newImpl Address of the new implementation contract to upgrade to\n @param data Encoded call data of an arbitrary function to call during the upgrade process, or empty if no function needs to be called during the upgrade"},"implemented":true,"kind":"function","modifiers":[],"name":"upgradeProxyTo","nameLocation":"3683:14:49","parameters":{"id":42007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42002,"mutability":"mutable","name":"proxy","nameLocation":"3706:5:49","nodeType":"VariableDeclaration","scope":42124,"src":"3698:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42001,"name":"address","nodeType":"ElementaryTypeName","src":"3698:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42004,"mutability":"mutable","name":"newImpl","nameLocation":"3721:7:49","nodeType":"VariableDeclaration","scope":42124,"src":"3713:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42003,"name":"address","nodeType":"ElementaryTypeName","src":"3713:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42006,"mutability":"mutable","name":"data","nameLocation":"3743:4:49","nodeType":"VariableDeclaration","scope":42124,"src":"3730:17:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":42005,"name":"bytes","nodeType":"ElementaryTypeName","src":"3730:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3697:51:49"},"returnParameters":{"id":42008,"nodeType":"ParameterList","parameters":[],"src":"3758:0:49"},"scope":42908,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":42146,"nodeType":"FunctionDefinition","src":"5624:214:49","nodes":[],"body":{"id":42145,"nodeType":"Block","src":"5785:53:49","nodes":[],"statements":[{"expression":{"arguments":[{"id":42140,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42127,"src":"5810:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42141,"name":"newImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42129,"src":"5817:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42142,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42131,"src":"5826:4:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":42139,"name":"upgradeProxyTo","nodeType":"Identifier","overloadedDeclarations":[42124,42146],"referencedDeclaration":42124,"src":"5795:14:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,bytes memory)"}},"id":42143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5795:36:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42144,"nodeType":"ExpressionStatement","src":"5795:36:49"}]},"documentation":{"id":42125,"nodeType":"StructuredDocumentation","src":"4715:904:49","text":" @notice For tests only. If broadcasting in scripts, use the `--sender <ADDRESS>` option with `forge script` instead.\n @dev Upgrades a proxy to a new implementation contract. Only supported for UUPS or transparent proxies.\n This function provides an additional `tryCaller` parameter to test an upgrade using a specific caller address.\n Use this if you encounter `OwnableUnauthorizedAccount` errors in your tests.\n @param proxy Address of the proxy to upgrade\n @param newImpl Address of the new implementation contract to upgrade to\n @param data Encoded call data of an arbitrary function to call during the upgrade process, or empty if no function needs to be called during the upgrade\n @param tryCaller Address to use as the caller of the upgrade function. This should be the address that owns the proxy or its ProxyAdmin."},"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":42136,"name":"tryCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42133,"src":"5774:9:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":42137,"kind":"modifierInvocation","modifierName":{"id":42135,"name":"tryPrank","nameLocations":["5765:8:49"],"nodeType":"IdentifierPath","referencedDeclaration":42446,"src":"5765:8:49"},"nodeType":"ModifierInvocation","src":"5765:19:49"}],"name":"upgradeProxyTo","nameLocation":"5633:14:49","parameters":{"id":42134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42127,"mutability":"mutable","name":"proxy","nameLocation":"5665:5:49","nodeType":"VariableDeclaration","scope":42146,"src":"5657:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42126,"name":"address","nodeType":"ElementaryTypeName","src":"5657:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42129,"mutability":"mutable","name":"newImpl","nameLocation":"5688:7:49","nodeType":"VariableDeclaration","scope":42146,"src":"5680:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42128,"name":"address","nodeType":"ElementaryTypeName","src":"5680:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42131,"mutability":"mutable","name":"data","nameLocation":"5718:4:49","nodeType":"VariableDeclaration","scope":42146,"src":"5705:17:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":42130,"name":"bytes","nodeType":"ElementaryTypeName","src":"5705:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":42133,"mutability":"mutable","name":"tryCaller","nameLocation":"5740:9:49","nodeType":"VariableDeclaration","scope":42146,"src":"5732:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42132,"name":"address","nodeType":"ElementaryTypeName","src":"5732:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5647:108:49"},"returnParameters":{"id":42138,"nodeType":"ParameterList","parameters":[],"src":"5785:0:49"},"scope":42908,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":42170,"nodeType":"FunctionDefinition","src":"6376:208:49","nodes":[],"body":{"id":42169,"nodeType":"Block","src":"6473:111:49","nodes":[],"statements":[{"assignments":[42158],"declarations":[{"constant":false,"id":42158,"mutability":"mutable","name":"newImpl","nameLocation":"6491:7:49","nodeType":"VariableDeclaration","scope":42169,"src":"6483:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42157,"name":"address","nodeType":"ElementaryTypeName","src":"6483:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":42163,"initialValue":{"arguments":[{"id":42160,"name":"contractName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42151,"src":"6516:12:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":42161,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42154,"src":"6530:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}],"id":42159,"name":"prepareUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42308,"src":"6501:14:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_struct$_Options_$41160_memory_ptr_$returns$_t_address_$","typeString":"function (string memory,struct Options memory) returns (address)"}},"id":42162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6501:34:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6483:52:49"},{"expression":{"arguments":[{"id":42165,"name":"beacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42149,"src":"6561:6:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42166,"name":"newImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42158,"src":"6569:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":42164,"name":"upgradeBeaconTo","nodeType":"Identifier","overloadedDeclarations":[42209,42228],"referencedDeclaration":42209,"src":"6545:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":42167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6545:32:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42168,"nodeType":"ExpressionStatement","src":"6545:32:49"}]},"documentation":{"id":42147,"nodeType":"StructuredDocumentation","src":"5844:527:49","text":" @dev Upgrades a beacon to a new implementation contract.\n Requires that either the `referenceContract` option is set, or the new implementation contract has a `@custom:oz-upgrades-from <reference>` annotation.\n @param beacon Address of the beacon to upgrade\n @param contractName Name of the new implementation contract to upgrade to, e.g. \"MyContract.sol\" or \"MyContract.sol:MyContract\" or artifact path relative to the project root directory\n @param opts Common options"},"implemented":true,"kind":"function","modifiers":[],"name":"upgradeBeacon","nameLocation":"6385:13:49","parameters":{"id":42155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42149,"mutability":"mutable","name":"beacon","nameLocation":"6407:6:49","nodeType":"VariableDeclaration","scope":42170,"src":"6399:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42148,"name":"address","nodeType":"ElementaryTypeName","src":"6399:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42151,"mutability":"mutable","name":"contractName","nameLocation":"6429:12:49","nodeType":"VariableDeclaration","scope":42170,"src":"6415:26:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":42150,"name":"string","nodeType":"ElementaryTypeName","src":"6415:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":42154,"mutability":"mutable","name":"opts","nameLocation":"6458:4:49","nodeType":"VariableDeclaration","scope":42170,"src":"6443:19:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options"},"typeName":{"id":42153,"nodeType":"UserDefinedTypeName","pathNode":{"id":42152,"name":"Options","nameLocations":["6443:7:49"],"nodeType":"IdentifierPath","referencedDeclaration":41160,"src":"6443:7:49"},"referencedDeclaration":41160,"src":"6443:7:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_storage_ptr","typeString":"struct Options"}},"visibility":"internal"}],"src":"6398:65:49"},"returnParameters":{"id":42156,"nodeType":"ParameterList","parameters":[],"src":"6473:0:49"},"scope":42908,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":42193,"nodeType":"FunctionDefinition","src":"7589:232:49","nodes":[],"body":{"id":42192,"nodeType":"Block","src":"7763:58:49","nodes":[],"statements":[{"expression":{"arguments":[{"id":42187,"name":"beacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42173,"src":"7787:6:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42188,"name":"contractName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42175,"src":"7795:12:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":42189,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42178,"src":"7809:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}],"id":42186,"name":"upgradeBeacon","nodeType":"Identifier","overloadedDeclarations":[42170,42193],"referencedDeclaration":42170,"src":"7773:13:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$_t_struct$_Options_$41160_memory_ptr_$returns$__$","typeString":"function (address,string memory,struct Options memory)"}},"id":42190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7773:41:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42191,"nodeType":"ExpressionStatement","src":"7773:41:49"}]},"documentation":{"id":42171,"nodeType":"StructuredDocumentation","src":"6590:994:49","text":" @notice For tests only. If broadcasting in scripts, use the `--sender <ADDRESS>` option with `forge script` instead.\n @dev Upgrades a beacon to a new implementation contract.\n Requires that either the `referenceContract` option is set, or the new implementation contract has a `@custom:oz-upgrades-from <reference>` annotation.\n This function provides an additional `tryCaller` parameter to test an upgrade using a specific caller address.\n Use this if you encounter `OwnableUnauthorizedAccount` errors in your tests.\n @param beacon Address of the beacon to upgrade\n @param contractName Name of the new implementation contract to upgrade to, e.g. \"MyContract.sol\" or \"MyContract.sol:MyContract\" or artifact path relative to the project root directory\n @param opts Common options\n @param tryCaller Address to use as the caller of the upgrade function. This should be the address that owns the beacon."},"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":42183,"name":"tryCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42180,"src":"7752:9:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":42184,"kind":"modifierInvocation","modifierName":{"id":42182,"name":"tryPrank","nameLocations":["7743:8:49"],"nodeType":"IdentifierPath","referencedDeclaration":42446,"src":"7743:8:49"},"nodeType":"ModifierInvocation","src":"7743:19:49"}],"name":"upgradeBeacon","nameLocation":"7598:13:49","parameters":{"id":42181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42173,"mutability":"mutable","name":"beacon","nameLocation":"7629:6:49","nodeType":"VariableDeclaration","scope":42193,"src":"7621:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42172,"name":"address","nodeType":"ElementaryTypeName","src":"7621:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42175,"mutability":"mutable","name":"contractName","nameLocation":"7659:12:49","nodeType":"VariableDeclaration","scope":42193,"src":"7645:26:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":42174,"name":"string","nodeType":"ElementaryTypeName","src":"7645:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":42178,"mutability":"mutable","name":"opts","nameLocation":"7696:4:49","nodeType":"VariableDeclaration","scope":42193,"src":"7681:19:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options"},"typeName":{"id":42177,"nodeType":"UserDefinedTypeName","pathNode":{"id":42176,"name":"Options","nameLocations":["7681:7:49"],"nodeType":"IdentifierPath","referencedDeclaration":41160,"src":"7681:7:49"},"referencedDeclaration":41160,"src":"7681:7:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_storage_ptr","typeString":"struct Options"}},"visibility":"internal"},{"constant":false,"id":42180,"mutability":"mutable","name":"tryCaller","nameLocation":"7718:9:49","nodeType":"VariableDeclaration","scope":42193,"src":"7710:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42179,"name":"address","nodeType":"ElementaryTypeName","src":"7710:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7611:122:49"},"returnParameters":{"id":42185,"nodeType":"ParameterList","parameters":[],"src":"7763:0:49"},"scope":42908,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":42209,"nodeType":"FunctionDefinition","src":"8055:129:49","nodes":[],"body":{"id":42208,"nodeType":"Block","src":"8122:62:49","nodes":[],"statements":[{"expression":{"arguments":[{"id":42205,"name":"newImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42198,"src":"8169:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":42202,"name":"beacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42196,"src":"8151:6:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42201,"name":"IUpgradeableBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45189,"src":"8132:18:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IUpgradeableBeacon_$45189_$","typeString":"type(contract IUpgradeableBeacon)"}},"id":42203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8132:26:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IUpgradeableBeacon_$45189","typeString":"contract IUpgradeableBeacon"}},"id":42204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8159:9:49","memberName":"upgradeTo","nodeType":"MemberAccess","referencedDeclaration":45188,"src":"8132:36:49","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":42206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8132:45:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42207,"nodeType":"ExpressionStatement","src":"8132:45:49"}]},"documentation":{"id":42194,"nodeType":"StructuredDocumentation","src":"7827:223:49","text":" @dev Upgrades a beacon to a new implementation contract address.\n @param beacon Address of the beacon to upgrade\n @param newImpl Address of the new implementation contract to upgrade to"},"implemented":true,"kind":"function","modifiers":[],"name":"upgradeBeaconTo","nameLocation":"8064:15:49","parameters":{"id":42199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42196,"mutability":"mutable","name":"beacon","nameLocation":"8088:6:49","nodeType":"VariableDeclaration","scope":42209,"src":"8080:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42195,"name":"address","nodeType":"ElementaryTypeName","src":"8080:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42198,"mutability":"mutable","name":"newImpl","nameLocation":"8104:7:49","nodeType":"VariableDeclaration","scope":42209,"src":"8096:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42197,"name":"address","nodeType":"ElementaryTypeName","src":"8096:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8079:33:49"},"returnParameters":{"id":42200,"nodeType":"ParameterList","parameters":[],"src":"8122:0:49"},"scope":42908,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":42228,"nodeType":"FunctionDefinition","src":"8877:155:49","nodes":[],"body":{"id":42227,"nodeType":"Block","src":"8983:49:49","nodes":[],"statements":[{"expression":{"arguments":[{"id":42223,"name":"beacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42212,"src":"9009:6:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42224,"name":"newImpl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42214,"src":"9017:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":42222,"name":"upgradeBeaconTo","nodeType":"Identifier","overloadedDeclarations":[42209,42228],"referencedDeclaration":42209,"src":"8993:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":42225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8993:32:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42226,"nodeType":"ExpressionStatement","src":"8993:32:49"}]},"documentation":{"id":42210,"nodeType":"StructuredDocumentation","src":"8190:682:49","text":" @notice For tests only. If broadcasting in scripts, use the `--sender <ADDRESS>` option with `forge script` instead.\n @dev Upgrades a beacon to a new implementation contract.\n This function provides an additional `tryCaller` parameter to test an upgrade using a specific caller address.\n Use this if you encounter `OwnableUnauthorizedAccount` errors in your tests.\n @param beacon Address of the beacon to upgrade\n @param newImpl Address of the new implementation contract to upgrade to\n @param tryCaller Address to use as the caller of the upgrade function. This should be the address that owns the beacon."},"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":42219,"name":"tryCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42216,"src":"8972:9:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":42220,"kind":"modifierInvocation","modifierName":{"id":42218,"name":"tryPrank","nameLocations":["8963:8:49"],"nodeType":"IdentifierPath","referencedDeclaration":42446,"src":"8963:8:49"},"nodeType":"ModifierInvocation","src":"8963:19:49"}],"name":"upgradeBeaconTo","nameLocation":"8886:15:49","parameters":{"id":42217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42212,"mutability":"mutable","name":"beacon","nameLocation":"8910:6:49","nodeType":"VariableDeclaration","scope":42228,"src":"8902:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42211,"name":"address","nodeType":"ElementaryTypeName","src":"8902:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42214,"mutability":"mutable","name":"newImpl","nameLocation":"8926:7:49","nodeType":"VariableDeclaration","scope":42228,"src":"8918:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42213,"name":"address","nodeType":"ElementaryTypeName","src":"8918:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":42216,"mutability":"mutable","name":"tryCaller","nameLocation":"8943:9:49","nodeType":"VariableDeclaration","scope":42228,"src":"8935:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42215,"name":"address","nodeType":"ElementaryTypeName","src":"8935:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8901:52:49"},"returnParameters":{"id":42221,"nodeType":"ParameterList","parameters":[],"src":"8983:0:49"},"scope":42908,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":42244,"nodeType":"FunctionDefinition","src":"9339:143:49","nodes":[],"body":{"id":42243,"nodeType":"Block","src":"9429:53:49","nodes":[],"statements":[{"expression":{"arguments":[{"id":42238,"name":"contractName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42231,"src":"9449:12:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":42239,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42234,"src":"9463:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}},{"hexValue":"66616c7365","id":42240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9469:5:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":42237,"name":"_validate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42589,"src":"9439:9:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_struct$_Options_$41160_memory_ptr_$_t_bool_$returns$__$","typeString":"function (string memory,struct Options memory,bool)"}},"id":42241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9439:36:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42242,"nodeType":"ExpressionStatement","src":"9439:36:49"}]},"documentation":{"id":42229,"nodeType":"StructuredDocumentation","src":"9038:296:49","text":" @dev Validates an implementation contract, but does not deploy it.\n @param contractName Name of the contract to validate, e.g. \"MyContract.sol\" or \"MyContract.sol:MyContract\" or artifact path relative to the project root directory\n @param opts Common options"},"implemented":true,"kind":"function","modifiers":[],"name":"validateImplementation","nameLocation":"9348:22:49","parameters":{"id":42235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42231,"mutability":"mutable","name":"contractName","nameLocation":"9385:12:49","nodeType":"VariableDeclaration","scope":42244,"src":"9371:26:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":42230,"name":"string","nodeType":"ElementaryTypeName","src":"9371:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":42234,"mutability":"mutable","name":"opts","nameLocation":"9414:4:49","nodeType":"VariableDeclaration","scope":42244,"src":"9399:19:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options"},"typeName":{"id":42233,"nodeType":"UserDefinedTypeName","pathNode":{"id":42232,"name":"Options","nameLocations":["9399:7:49"],"nodeType":"IdentifierPath","referencedDeclaration":41160,"src":"9399:7:49"},"referencedDeclaration":41160,"src":"9399:7:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_storage_ptr","typeString":"struct Options"}},"visibility":"internal"}],"src":"9370:49:49"},"returnParameters":{"id":42236,"nodeType":"ParameterList","parameters":[],"src":"9429:0:49"},"scope":42908,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":42268,"nodeType":"FunctionDefinition","src":"9854:230:49","nodes":[],"body":{"id":42267,"nodeType":"Block","src":"9960:124:49","nodes":[],"statements":[{"expression":{"arguments":[{"id":42256,"name":"contractName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42247,"src":"9993:12:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":42257,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42250,"src":"10007:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}],"id":42255,"name":"validateImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42244,"src":"9970:22:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_struct$_Options_$41160_memory_ptr_$returns$__$","typeString":"function (string memory,struct Options memory)"}},"id":42258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9970:42:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42259,"nodeType":"ExpressionStatement","src":"9970:42:49"},{"expression":{"arguments":[{"id":42261,"name":"contractName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42247,"src":"10036:12:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":42262,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42250,"src":"10050:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}},"id":42263,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10055:15:49","memberName":"constructorData","nodeType":"MemberAccess","referencedDeclaration":41148,"src":"10050:20:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":42264,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42250,"src":"10072:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}],"id":42260,"name":"deploy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42836,"src":"10029:6:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_Options_$41160_memory_ptr_$returns$_t_address_$","typeString":"function (string memory,bytes memory,struct Options memory) returns (address)"}},"id":42265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10029:48:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":42254,"id":42266,"nodeType":"Return","src":"10022:55:49"}]},"documentation":{"id":42245,"nodeType":"StructuredDocumentation","src":"9488:361:49","text":" @dev Validates and deploys an implementation contract, and returns its address.\n @param contractName Name of the contract to deploy, e.g. \"MyContract.sol\" or \"MyContract.sol:MyContract\" or artifact path relative to the project root directory\n @param opts Common options\n @return Address of the implementation contract"},"implemented":true,"kind":"function","modifiers":[],"name":"deployImplementation","nameLocation":"9863:20:49","parameters":{"id":42251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42247,"mutability":"mutable","name":"contractName","nameLocation":"9898:12:49","nodeType":"VariableDeclaration","scope":42268,"src":"9884:26:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":42246,"name":"string","nodeType":"ElementaryTypeName","src":"9884:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":42250,"mutability":"mutable","name":"opts","nameLocation":"9927:4:49","nodeType":"VariableDeclaration","scope":42268,"src":"9912:19:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options"},"typeName":{"id":42249,"nodeType":"UserDefinedTypeName","pathNode":{"id":42248,"name":"Options","nameLocations":["9912:7:49"],"nodeType":"IdentifierPath","referencedDeclaration":41160,"src":"9912:7:49"},"referencedDeclaration":41160,"src":"9912:7:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_storage_ptr","typeString":"struct Options"}},"visibility":"internal"}],"src":"9883:49:49"},"returnParameters":{"id":42254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42253,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42268,"src":"9951:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42252,"name":"address","nodeType":"ElementaryTypeName","src":"9951:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9950:9:49"},"scope":42908,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":42284,"nodeType":"FunctionDefinition","src":"10581:135:49","nodes":[],"body":{"id":42283,"nodeType":"Block","src":"10664:52:49","nodes":[],"statements":[{"expression":{"arguments":[{"id":42278,"name":"contractName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42271,"src":"10684:12:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":42279,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42274,"src":"10698:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}},{"hexValue":"74727565","id":42280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10704:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":42277,"name":"_validate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42589,"src":"10674:9:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_struct$_Options_$41160_memory_ptr_$_t_bool_$returns$__$","typeString":"function (string memory,struct Options memory,bool)"}},"id":42281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10674:35:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42282,"nodeType":"ExpressionStatement","src":"10674:35:49"}]},"documentation":{"id":42269,"nodeType":"StructuredDocumentation","src":"10090:486:49","text":" @dev Validates a new implementation contract in comparison with a reference contract, but does not deploy it.\n Requires that either the `referenceContract` option is set, or the contract has a `@custom:oz-upgrades-from <reference>` annotation.\n @param contractName Name of the contract to validate, e.g. \"MyContract.sol\" or \"MyContract.sol:MyContract\" or artifact path relative to the project root directory\n @param opts Common options"},"implemented":true,"kind":"function","modifiers":[],"name":"validateUpgrade","nameLocation":"10590:15:49","parameters":{"id":42275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42271,"mutability":"mutable","name":"contractName","nameLocation":"10620:12:49","nodeType":"VariableDeclaration","scope":42284,"src":"10606:26:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":42270,"name":"string","nodeType":"ElementaryTypeName","src":"10606:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":42274,"mutability":"mutable","name":"opts","nameLocation":"10649:4:49","nodeType":"VariableDeclaration","scope":42284,"src":"10634:19:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options"},"typeName":{"id":42273,"nodeType":"UserDefinedTypeName","pathNode":{"id":42272,"name":"Options","nameLocations":["10634:7:49"],"nodeType":"IdentifierPath","referencedDeclaration":41160,"src":"10634:7:49"},"referencedDeclaration":41160,"src":"10634:7:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_storage_ptr","typeString":"struct Options"}},"visibility":"internal"}],"src":"10605:49:49"},"returnParameters":{"id":42276,"nodeType":"ParameterList","parameters":[],"src":"10664:0:49"},"scope":42908,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":42308,"nodeType":"FunctionDefinition","src":"11478:217:49","nodes":[],"body":{"id":42307,"nodeType":"Block","src":"11578:117:49","nodes":[],"statements":[{"expression":{"arguments":[{"id":42296,"name":"contractName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42287,"src":"11604:12:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":42297,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42290,"src":"11618:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}],"id":42295,"name":"validateUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42284,"src":"11588:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_struct$_Options_$41160_memory_ptr_$returns$__$","typeString":"function (string memory,struct Options memory)"}},"id":42298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11588:35:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42299,"nodeType":"ExpressionStatement","src":"11588:35:49"},{"expression":{"arguments":[{"id":42301,"name":"contractName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42287,"src":"11647:12:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":42302,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42290,"src":"11661:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}},"id":42303,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11666:15:49","memberName":"constructorData","nodeType":"MemberAccess","referencedDeclaration":41148,"src":"11661:20:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":42304,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42290,"src":"11683:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}],"id":42300,"name":"deploy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42836,"src":"11640:6:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_Options_$41160_memory_ptr_$returns$_t_address_$","typeString":"function (string memory,bytes memory,struct Options memory) returns (address)"}},"id":42305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11640:48:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":42294,"id":42306,"nodeType":"Return","src":"11633:55:49"}]},"documentation":{"id":42285,"nodeType":"StructuredDocumentation","src":"10722:751:49","text":" @dev Validates a new implementation contract in comparison with a reference contract, deploys the new implementation contract,\n and returns its address.\n Requires that either the `referenceContract` option is set, or the contract has a `@custom:oz-upgrades-from <reference>` annotation.\n Use this method to prepare an upgrade to be run from an admin address you do not control directly or cannot use from your deployment environment.\n @param contractName Name of the contract to deploy, e.g. \"MyContract.sol\" or \"MyContract.sol:MyContract\" or artifact path relative to the project root directory\n @param opts Common options\n @return Address of the new implementation contract"},"implemented":true,"kind":"function","modifiers":[],"name":"prepareUpgrade","nameLocation":"11487:14:49","parameters":{"id":42291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42287,"mutability":"mutable","name":"contractName","nameLocation":"11516:12:49","nodeType":"VariableDeclaration","scope":42308,"src":"11502:26:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":42286,"name":"string","nodeType":"ElementaryTypeName","src":"11502:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":42290,"mutability":"mutable","name":"opts","nameLocation":"11545:4:49","nodeType":"VariableDeclaration","scope":42308,"src":"11530:19:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options"},"typeName":{"id":42289,"nodeType":"UserDefinedTypeName","pathNode":{"id":42288,"name":"Options","nameLocations":["11530:7:49"],"nodeType":"IdentifierPath","referencedDeclaration":41160,"src":"11530:7:49"},"referencedDeclaration":41160,"src":"11530:7:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_storage_ptr","typeString":"struct Options"}},"visibility":"internal"}],"src":"11501:49:49"},"returnParameters":{"id":42294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42293,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42308,"src":"11569:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42292,"name":"address","nodeType":"ElementaryTypeName","src":"11569:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11568:9:49"},"scope":42908,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":42344,"nodeType":"FunctionDefinition","src":"11899:234:49","nodes":[],"body":{"id":42343,"nodeType":"Block","src":"11971:162:49","nodes":[],"statements":[{"assignments":[42318],"declarations":[{"constant":false,"id":42318,"mutability":"mutable","name":"vm","nameLocation":"11984:2:49","nodeType":"VariableDeclaration","scope":42343,"src":"11981:5:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"},"typeName":{"id":42317,"nodeType":"UserDefinedTypeName","pathNode":{"id":42316,"name":"Vm","nameLocations":["11981:2:49"],"nodeType":"IdentifierPath","referencedDeclaration":12362,"src":"11981:2:49"},"referencedDeclaration":12362,"src":"11981:2:49","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"}},"visibility":"internal"}],"id":42323,"initialValue":{"arguments":[{"expression":{"id":42320,"name":"Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45150,"src":"11992:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Utils_$45150_$","typeString":"type(library Utils)"}},"id":42321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11998:17:49","memberName":"CHEATCODE_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":44410,"src":"11992:23:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42319,"name":"Vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12362,"src":"11989:2:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Vm_$12362_$","typeString":"type(contract Vm)"}},"id":42322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11989:27:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"}},"nodeType":"VariableDeclarationStatement","src":"11981:35:49"},{"assignments":[42325],"declarations":[{"constant":false,"id":42325,"mutability":"mutable","name":"adminSlot","nameLocation":"12035:9:49","nodeType":"VariableDeclaration","scope":42343,"src":"12027:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":42324,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12027:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":42331,"initialValue":{"arguments":[{"id":42328,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42311,"src":"12055:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42329,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42454,"src":"12062:10:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":42326,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42318,"src":"12047:2:49","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"}},"id":42327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12050:4:49","memberName":"load","nodeType":"MemberAccess","referencedDeclaration":9150,"src":"12047:7:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,bytes32) view external returns (bytes32)"}},"id":42330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12047:26:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"12027:46:49"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":42338,"name":"adminSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42325,"src":"12114:9:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":42337,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12106:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":42336,"name":"uint256","nodeType":"ElementaryTypeName","src":"12106:7:49","typeDescriptions":{}}},"id":42339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12106:18:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12098:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":42334,"name":"uint160","nodeType":"ElementaryTypeName","src":"12098:7:49","typeDescriptions":{}}},"id":42340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12098:27:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":42333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12090:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42332,"name":"address","nodeType":"ElementaryTypeName","src":"12090:7:49","typeDescriptions":{}}},"id":42341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12090:36:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":42315,"id":42342,"nodeType":"Return","src":"12083:43:49"}]},"documentation":{"id":42309,"nodeType":"StructuredDocumentation","src":"11701:193:49","text":" @dev Gets the admin address of a transparent proxy from its ERC1967 admin storage slot.\n @param proxy Address of a transparent proxy\n @return Admin address"},"implemented":true,"kind":"function","modifiers":[],"name":"getAdminAddress","nameLocation":"11908:15:49","parameters":{"id":42312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42311,"mutability":"mutable","name":"proxy","nameLocation":"11932:5:49","nodeType":"VariableDeclaration","scope":42344,"src":"11924:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42310,"name":"address","nodeType":"ElementaryTypeName","src":"11924:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11923:15:49"},"returnParameters":{"id":42315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42344,"src":"11962:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42313,"name":"address","nodeType":"ElementaryTypeName","src":"11962:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11961:9:49"},"scope":42908,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":42380,"nodeType":"FunctionDefinition","src":"12380:250:49","nodes":[],"body":{"id":42379,"nodeType":"Block","src":"12461:169:49","nodes":[],"statements":[{"assignments":[42354],"declarations":[{"constant":false,"id":42354,"mutability":"mutable","name":"vm","nameLocation":"12474:2:49","nodeType":"VariableDeclaration","scope":42379,"src":"12471:5:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"},"typeName":{"id":42353,"nodeType":"UserDefinedTypeName","pathNode":{"id":42352,"name":"Vm","nameLocations":["12471:2:49"],"nodeType":"IdentifierPath","referencedDeclaration":12362,"src":"12471:2:49"},"referencedDeclaration":12362,"src":"12471:2:49","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"}},"visibility":"internal"}],"id":42359,"initialValue":{"arguments":[{"expression":{"id":42356,"name":"Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45150,"src":"12482:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Utils_$45150_$","typeString":"type(library Utils)"}},"id":42357,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12488:17:49","memberName":"CHEATCODE_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":44410,"src":"12482:23:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42355,"name":"Vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12362,"src":"12479:2:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Vm_$12362_$","typeString":"type(contract Vm)"}},"id":42358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12479:27:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"}},"nodeType":"VariableDeclarationStatement","src":"12471:35:49"},{"assignments":[42361],"declarations":[{"constant":false,"id":42361,"mutability":"mutable","name":"implSlot","nameLocation":"12525:8:49","nodeType":"VariableDeclaration","scope":42379,"src":"12517:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":42360,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12517:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":42367,"initialValue":{"arguments":[{"id":42364,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42347,"src":"12544:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42365,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42450,"src":"12551:19:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":42362,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42354,"src":"12536:2:49","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"}},"id":42363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12539:4:49","memberName":"load","nodeType":"MemberAccess","referencedDeclaration":9150,"src":"12536:7:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,bytes32) view external returns (bytes32)"}},"id":42366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12536:35:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"12517:54:49"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":42374,"name":"implSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42361,"src":"12612:8:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":42373,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12604:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":42372,"name":"uint256","nodeType":"ElementaryTypeName","src":"12604:7:49","typeDescriptions":{}}},"id":42375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12604:17:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42371,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12596:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":42370,"name":"uint160","nodeType":"ElementaryTypeName","src":"12596:7:49","typeDescriptions":{}}},"id":42376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12596:26:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":42369,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12588:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42368,"name":"address","nodeType":"ElementaryTypeName","src":"12588:7:49","typeDescriptions":{}}},"id":42377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12588:35:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":42351,"id":42378,"nodeType":"Return","src":"12581:42:49"}]},"documentation":{"id":42345,"nodeType":"StructuredDocumentation","src":"12139:236:49","text":" @dev Gets the implementation address of a transparent or UUPS proxy from its ERC1967 implementation storage slot.\n @param proxy Address of a transparent or UUPS proxy\n @return Implementation address"},"implemented":true,"kind":"function","modifiers":[],"name":"getImplementationAddress","nameLocation":"12389:24:49","parameters":{"id":42348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42347,"mutability":"mutable","name":"proxy","nameLocation":"12422:5:49","nodeType":"VariableDeclaration","scope":42380,"src":"12414:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42346,"name":"address","nodeType":"ElementaryTypeName","src":"12414:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12413:15:49"},"returnParameters":{"id":42351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42350,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42380,"src":"12452:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42349,"name":"address","nodeType":"ElementaryTypeName","src":"12452:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12451:9:49"},"scope":42908,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":42416,"nodeType":"FunctionDefinition","src":"12827:238:49","nodes":[],"body":{"id":42415,"nodeType":"Block","src":"12900:165:49","nodes":[],"statements":[{"assignments":[42390],"declarations":[{"constant":false,"id":42390,"mutability":"mutable","name":"vm","nameLocation":"12913:2:49","nodeType":"VariableDeclaration","scope":42415,"src":"12910:5:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"},"typeName":{"id":42389,"nodeType":"UserDefinedTypeName","pathNode":{"id":42388,"name":"Vm","nameLocations":["12910:2:49"],"nodeType":"IdentifierPath","referencedDeclaration":12362,"src":"12910:2:49"},"referencedDeclaration":12362,"src":"12910:2:49","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"}},"visibility":"internal"}],"id":42395,"initialValue":{"arguments":[{"expression":{"id":42392,"name":"Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45150,"src":"12921:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Utils_$45150_$","typeString":"type(library Utils)"}},"id":42393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12927:17:49","memberName":"CHEATCODE_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":44410,"src":"12921:23:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42391,"name":"Vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12362,"src":"12918:2:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Vm_$12362_$","typeString":"type(contract Vm)"}},"id":42394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12918:27:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"}},"nodeType":"VariableDeclarationStatement","src":"12910:35:49"},{"assignments":[42397],"declarations":[{"constant":false,"id":42397,"mutability":"mutable","name":"beaconSlot","nameLocation":"12964:10:49","nodeType":"VariableDeclaration","scope":42415,"src":"12956:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":42396,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12956:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":42403,"initialValue":{"arguments":[{"id":42400,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42383,"src":"12985:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":42401,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42458,"src":"12992:11:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":42398,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42390,"src":"12977:2:49","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"}},"id":42399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12980:4:49","memberName":"load","nodeType":"MemberAccess","referencedDeclaration":9150,"src":"12977:7:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,bytes32) view external returns (bytes32)"}},"id":42402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12977:27:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"12956:48:49"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":42410,"name":"beaconSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42397,"src":"13045:10:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":42409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13037:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":42408,"name":"uint256","nodeType":"ElementaryTypeName","src":"13037:7:49","typeDescriptions":{}}},"id":42411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13037:19:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":42407,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13029:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":42406,"name":"uint160","nodeType":"ElementaryTypeName","src":"13029:7:49","typeDescriptions":{}}},"id":42412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13029:28:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":42405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13021:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42404,"name":"address","nodeType":"ElementaryTypeName","src":"13021:7:49","typeDescriptions":{}}},"id":42413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13021:37:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":42387,"id":42414,"nodeType":"Return","src":"13014:44:49"}]},"documentation":{"id":42381,"nodeType":"StructuredDocumentation","src":"12636:186:49","text":" @dev Gets the beacon address of a beacon proxy from its ERC1967 beacon storage slot.\n @param proxy Address of a beacon proxy\n @return Beacon address"},"implemented":true,"kind":"function","modifiers":[],"name":"getBeaconAddress","nameLocation":"12836:16:49","parameters":{"id":42384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42383,"mutability":"mutable","name":"proxy","nameLocation":"12861:5:49","nodeType":"VariableDeclaration","scope":42416,"src":"12853:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42382,"name":"address","nodeType":"ElementaryTypeName","src":"12853:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12852:15:49"},"returnParameters":{"id":42387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42386,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42416,"src":"12891:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42385,"name":"address","nodeType":"ElementaryTypeName","src":"12891:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12890:9:49"},"scope":42908,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":42446,"nodeType":"ModifierDefinition","src":"13328:213:49","nodes":[],"body":{"id":42445,"nodeType":"Block","src":"13364:177:49","nodes":[],"statements":[{"assignments":[42423],"declarations":[{"constant":false,"id":42423,"mutability":"mutable","name":"vm","nameLocation":"13377:2:49","nodeType":"VariableDeclaration","scope":42445,"src":"13374:5:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"},"typeName":{"id":42422,"nodeType":"UserDefinedTypeName","pathNode":{"id":42421,"name":"Vm","nameLocations":["13374:2:49"],"nodeType":"IdentifierPath","referencedDeclaration":12362,"src":"13374:2:49"},"referencedDeclaration":12362,"src":"13374:2:49","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"}},"visibility":"internal"}],"id":42428,"initialValue":{"arguments":[{"expression":{"id":42425,"name":"Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45150,"src":"13385:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Utils_$45150_$","typeString":"type(library Utils)"}},"id":42426,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13391:17:49","memberName":"CHEATCODE_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":44410,"src":"13385:23:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42424,"name":"Vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12362,"src":"13382:2:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Vm_$12362_$","typeString":"type(contract Vm)"}},"id":42427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13382:27:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"}},"nodeType":"VariableDeclarationStatement","src":"13374:35:49"},{"clauses":[{"block":{"id":42439,"nodeType":"Block","src":"13448:54:49","statements":[{"id":42433,"nodeType":"PlaceholderStatement","src":"13462:1:49"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":42434,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42423,"src":"13477:2:49","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"}},"id":42436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13480:9:49","memberName":"stopPrank","nodeType":"MemberAccess","referencedDeclaration":12155,"src":"13477:12:49","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":42437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13477:14:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42438,"nodeType":"ExpressionStatement","src":"13477:14:49"}]},"errorName":"","id":42440,"nodeType":"TryCatchClause","src":"13448:54:49"},{"block":{"id":42442,"nodeType":"Block","src":"13509:26:49","statements":[{"id":42441,"nodeType":"PlaceholderStatement","src":"13523:1:49"}]},"errorName":"","id":42443,"nodeType":"TryCatchClause","src":"13503:32:49"}],"externalCall":{"arguments":[{"id":42431,"name":"deployer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42419,"src":"13438:8:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":42429,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42423,"src":"13424:2:49","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"}},"id":42430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13427:10:49","memberName":"startPrank","nodeType":"MemberAccess","referencedDeclaration":12143,"src":"13424:13:49","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":42432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13424:23:49","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42444,"nodeType":"TryStatement","src":"13420:115:49"}]},"documentation":{"id":42417,"nodeType":"StructuredDocumentation","src":"13071:252:49","text":" @notice For tests only. If broadcasting in scripts, use the `--sender <ADDRESS>` option with `forge script` instead.\n @dev Runs a function as a prank, or just runs the function normally if the prank could not be started."},"name":"tryPrank","nameLocation":"13337:8:49","parameters":{"id":42420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42419,"mutability":"mutable","name":"deployer","nameLocation":"13354:8:49","nodeType":"VariableDeclaration","scope":42446,"src":"13346:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42418,"name":"address","nodeType":"ElementaryTypeName","src":"13346:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13345:18:49"},"virtual":false,"visibility":"internal"},{"id":42450,"nodeType":"VariableDeclaration","src":"13714:113:49","nodes":[],"constant":true,"documentation":{"id":42447,"nodeType":"StructuredDocumentation","src":"13547:162:49","text":" @dev Storage slot with the address of the implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1."},"mutability":"constant","name":"IMPLEMENTATION_SLOT","nameLocation":"13739:19:49","scope":42908,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":42448,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13714:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":42449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13761:66:49","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"private"},{"id":42454,"nodeType":"VariableDeclaration","src":"13981:104:49","nodes":[],"constant":true,"documentation":{"id":42451,"nodeType":"StructuredDocumentation","src":"13834:142:49","text":" @dev Storage slot with the admin of the proxy.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1."},"mutability":"constant","name":"ADMIN_SLOT","nameLocation":"14006:10:49","scope":42908,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":42452,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13981:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":42453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14019:66:49","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"private"},{"id":42458,"nodeType":"VariableDeclaration","src":"14295:105:49","nodes":[],"constant":true,"documentation":{"id":42455,"nodeType":"StructuredDocumentation","src":"14092:198:49","text":" @dev Storage slot with the UpgradeableBeacon contract which defines the implementation for the proxy.\n This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1."},"mutability":"constant","name":"BEACON_SLOT","nameLocation":"14320:11:49","scope":42908,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":42456,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14295:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":42457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14334:66:49","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"private"},{"id":42460,"nodeType":"UsingForDirective","src":"14407:20:49","nodes":[],"global":false,"libraryName":{"id":42459,"name":"strings","nameLocations":["14413:7:49"],"nodeType":"IdentifierPath","referencedDeclaration":40971,"src":"14413:7:49"}},{"id":42494,"nodeType":"FunctionDefinition","src":"14433:333:49","nodes":[],"body":{"id":42493,"nodeType":"Block","src":"14516:250:49","nodes":[],"statements":[{"assignments":[42468,42470],"declarations":[{"constant":false,"id":42468,"mutability":"mutable","name":"success","nameLocation":"14532:7:49","nodeType":"VariableDeclaration","scope":42493,"src":"14527:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":42467,"name":"bool","nodeType":"ElementaryTypeName","src":"14527:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":42470,"mutability":"mutable","name":"returndata","nameLocation":"14554:10:49","nodeType":"VariableDeclaration","scope":42493,"src":"14541:23:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":42469,"name":"bytes","nodeType":"ElementaryTypeName","src":"14541:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":42478,"initialValue":{"arguments":[{"arguments":[{"hexValue":"555047524144455f494e544552464143455f56455253494f4e2829","id":42475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14602:29:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_ad3cb1cc5c2df3b903ea43f30f77a80ecfeefbed7932a4a8e68c92af99e41dfd","typeString":"literal_string \"UPGRADE_INTERFACE_VERSION()\""},"value":"UPGRADE_INTERFACE_VERSION()"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_ad3cb1cc5c2df3b903ea43f30f77a80ecfeefbed7932a4a8e68c92af99e41dfd","typeString":"literal_string \"UPGRADE_INTERFACE_VERSION()\""}],"expression":{"id":42473,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14578:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":42474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14582:19:49","memberName":"encodeWithSignature","nodeType":"MemberAccess","src":"14578:23:49","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":42476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14578:54:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":42471,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42462,"src":"14568:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":42472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14573:4:49","memberName":"call","nodeType":"MemberAccess","src":"14568:9:49","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":42477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14568:65:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"14526:107:49"},{"condition":{"id":42479,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42468,"src":"14647:7:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":42491,"nodeType":"Block","src":"14726:34:49","statements":[{"expression":{"hexValue":"","id":42489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14747:2:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":42466,"id":42490,"nodeType":"Return","src":"14740:9:49"}]},"id":42492,"nodeType":"IfStatement","src":"14643:117:49","trueBody":{"id":42488,"nodeType":"Block","src":"14656:64:49","statements":[{"expression":{"arguments":[{"id":42482,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42470,"src":"14688:10:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":42484,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14701:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":42483,"name":"string","nodeType":"ElementaryTypeName","src":"14701:6:49","typeDescriptions":{}}}],"id":42485,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"14700:8:49","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"}],"expression":{"id":42480,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14677:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":42481,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14681:6:49","memberName":"decode","nodeType":"MemberAccess","src":"14677:10:49","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":42486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14677:32:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":42466,"id":42487,"nodeType":"Return","src":"14670:39:49"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getUpgradeInterfaceVersion","nameLocation":"14442:27:49","parameters":{"id":42463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42462,"mutability":"mutable","name":"addr","nameLocation":"14478:4:49","nodeType":"VariableDeclaration","scope":42494,"src":"14470:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42461,"name":"address","nodeType":"ElementaryTypeName","src":"14470:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14469:14:49"},"returnParameters":{"id":42466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42465,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42494,"src":"14501:13:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":42464,"name":"string","nodeType":"ElementaryTypeName","src":"14501:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"14500:15:49"},"scope":42908,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":42589,"nodeType":"FunctionDefinition","src":"14772:1087:49","nodes":[],"body":{"id":42588,"nodeType":"Block","src":"14871:988:49","nodes":[],"statements":[{"condition":{"expression":{"id":42504,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42499,"src":"14885:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}},"id":42505,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14890:19:49","memberName":"unsafeSkipAllChecks","nodeType":"MemberAccess","referencedDeclaration":41156,"src":"14885:24:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42508,"nodeType":"IfStatement","src":"14881:61:49","trueBody":{"id":42507,"nodeType":"Block","src":"14911:31:49","statements":[{"functionReturnParameters":42503,"id":42506,"nodeType":"Return","src":"14925:7:49"}]}},{"assignments":[42513],"declarations":[{"constant":false,"id":42513,"mutability":"mutable","name":"inputs","nameLocation":"14968:6:49","nodeType":"VariableDeclaration","scope":42588,"src":"14952:22:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":42511,"name":"string","nodeType":"ElementaryTypeName","src":"14952:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":42512,"nodeType":"ArrayTypeName","src":"14952:8:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"id":42519,"initialValue":{"arguments":[{"id":42515,"name":"contractName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42496,"src":"14999:12:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":42516,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42499,"src":"15013:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}},{"id":42517,"name":"requireReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42501,"src":"15019:16:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":42514,"name":"_buildValidateCommand","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42804,"src":"14977:21:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$_t_struct$_Options_$41160_memory_ptr_$_t_bool_$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$","typeString":"function (string memory,struct Options memory,bool) view returns (string memory[] memory)"}},"id":42518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14977:59:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"14952:84:49"},{"assignments":[42524],"declarations":[{"constant":false,"id":42524,"mutability":"mutable","name":"result","nameLocation":"15066:6:49","nodeType":"VariableDeclaration","scope":42588,"src":"15046:26:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FfiResult_$8636_memory_ptr","typeString":"struct VmSafe.FfiResult"},"typeName":{"id":42523,"nodeType":"UserDefinedTypeName","pathNode":{"id":42522,"name":"Vm.FfiResult","nameLocations":["15046:2:49","15049:9:49"],"nodeType":"IdentifierPath","referencedDeclaration":8636,"src":"15046:12:49"},"referencedDeclaration":8636,"src":"15046:12:49","typeDescriptions":{"typeIdentifier":"t_struct$_FfiResult_$8636_storage_ptr","typeString":"struct VmSafe.FfiResult"}},"visibility":"internal"}],"id":42529,"initialValue":{"arguments":[{"id":42527,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42513,"src":"15098:6:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}],"expression":{"id":42525,"name":"Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45150,"src":"15075:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Utils_$45150_$","typeString":"type(library Utils)"}},"id":42526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15081:16:49","memberName":"runAsBashCommand","nodeType":"MemberAccess","referencedDeclaration":45149,"src":"15075:22:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$returns$_t_struct$_FfiResult_$8636_memory_ptr_$","typeString":"function (string memory[] memory) returns (struct VmSafe.FfiResult memory)"}},"id":42528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15075:30:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_FfiResult_$8636_memory_ptr","typeString":"struct VmSafe.FfiResult memory"}},"nodeType":"VariableDeclarationStatement","src":"15046:59:49"},{"assignments":[42531],"declarations":[{"constant":false,"id":42531,"mutability":"mutable","name":"stdout","nameLocation":"15129:6:49","nodeType":"VariableDeclaration","scope":42588,"src":"15115:20:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":42530,"name":"string","nodeType":"ElementaryTypeName","src":"15115:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":42537,"initialValue":{"arguments":[{"expression":{"id":42534,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42524,"src":"15145:6:49","typeDescriptions":{"typeIdentifier":"t_struct$_FfiResult_$8636_memory_ptr","typeString":"struct VmSafe.FfiResult memory"}},"id":42535,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15152:6:49","memberName":"stdout","nodeType":"MemberAccess","referencedDeclaration":8633,"src":"15145:13:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":42533,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15138:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":42532,"name":"string","nodeType":"ElementaryTypeName","src":"15138:6:49","typeDescriptions":{}}},"id":42536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15138:21:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"15115:44:49"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":42550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int32","typeString":"int32"},"id":42541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":42538,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42524,"src":"15366:6:49","typeDescriptions":{"typeIdentifier":"t_struct$_FfiResult_$8636_memory_ptr","typeString":"struct VmSafe.FfiResult memory"}},"id":42539,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15373:8:49","memberName":"exitCode","nodeType":"MemberAccess","referencedDeclaration":8631,"src":"15366:15:49","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":42540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15385:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15366:20:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"hexValue":"53554343455353","id":42546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15416:9:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bf027dd97f3bae0cf8cfb909695ec63313a9bd61ad52fc7f52cf565b141da8","typeString":"literal_string \"SUCCESS\""},"value":"SUCCESS"},"id":42547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15426:7:49","memberName":"toSlice","nodeType":"MemberAccess","referencedDeclaration":39222,"src":"15416:17:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$39147_memory_ptr_$attached_to$_t_string_memory_ptr_$","typeString":"function (string memory) pure returns (struct strings.slice memory)"}},"id":42548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15416:19:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_slice_$39147_memory_ptr","typeString":"struct strings.slice memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$39147_memory_ptr","typeString":"struct strings.slice memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":42542,"name":"stdout","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42531,"src":"15390:6:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":42543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15397:7:49","memberName":"toSlice","nodeType":"MemberAccess","referencedDeclaration":39222,"src":"15390:14:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_struct$_slice_$39147_memory_ptr_$attached_to$_t_string_memory_ptr_$","typeString":"function (string memory) pure returns (struct strings.slice memory)"}},"id":42544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15390:16:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_slice_$39147_memory_ptr","typeString":"struct strings.slice memory"}},"id":42545,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15407:8:49","memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":40806,"src":"15390:25:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_slice_$39147_memory_ptr_$_t_struct$_slice_$39147_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_slice_$39147_memory_ptr_$","typeString":"function (struct strings.slice memory,struct strings.slice memory) pure returns (bool)"}},"id":42549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15390:46:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15366:70:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":42553,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42524,"src":"15479:6:49","typeDescriptions":{"typeIdentifier":"t_struct$_FfiResult_$8636_memory_ptr","typeString":"struct VmSafe.FfiResult memory"}},"id":42554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15486:6:49","memberName":"stderr","nodeType":"MemberAccess","referencedDeclaration":8635,"src":"15479:13:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":42555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15493:6:49","memberName":"length","nodeType":"MemberAccess","src":"15479:20:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":42556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15502:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15479:24:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":42585,"nodeType":"Block","src":"15677:176:49","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"55706772616465207361666574792076616c69646174696f6e206661696c65643a0a","id":42579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15794:37:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_08801615ab40adc93bf881a8fa998cec8215450529dace7649c906794b645fd9","typeString":"literal_string hex\"55706772616465207361666574792076616c69646174696f6e206661696c65643a0a\""},"value":"Upgrade safety validation failed:\n"},{"id":42580,"name":"stdout","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42531,"src":"15833:6:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_08801615ab40adc93bf881a8fa998cec8215450529dace7649c906794b645fd9","typeString":"literal_string hex\"55706772616465207361666574792076616c69646174696f6e206661696c65643a0a\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":42577,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15777:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":42578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15781:12:49","memberName":"encodePacked","nodeType":"MemberAccess","src":"15777:16:49","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":42581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15777:63:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":42576,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15770:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":42575,"name":"string","nodeType":"ElementaryTypeName","src":"15770:6:49","typeDescriptions":{}}},"id":42582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15770:71:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":42574,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"15763:6:49","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":42583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15763:79:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42584,"nodeType":"ExpressionStatement","src":"15763:79:49"}]},"id":42586,"nodeType":"IfStatement","src":"15475:378:49","trueBody":{"id":42573,"nodeType":"Block","src":"15505:166:49","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"4661696c656420746f2072756e2075706772616465207361666574792076616c69646174696f6e3a20","id":42563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15591:43:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_29a2b74f226f0ae680d4b1730e672f85f1c84ce9f2c45ff21557229ab3df8027","typeString":"literal_string \"Failed to run upgrade safety validation: \""},"value":"Failed to run upgrade safety validation: "},{"arguments":[{"expression":{"id":42566,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42524,"src":"15643:6:49","typeDescriptions":{"typeIdentifier":"t_struct$_FfiResult_$8636_memory_ptr","typeString":"struct VmSafe.FfiResult memory"}},"id":42567,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15650:6:49","memberName":"stderr","nodeType":"MemberAccess","referencedDeclaration":8635,"src":"15643:13:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":42565,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15636:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":42564,"name":"string","nodeType":"ElementaryTypeName","src":"15636:6:49","typeDescriptions":{}}},"id":42568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15636:21:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_29a2b74f226f0ae680d4b1730e672f85f1c84ce9f2c45ff21557229ab3df8027","typeString":"literal_string \"Failed to run upgrade safety validation: \""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":42561,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15574:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":42562,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15578:12:49","memberName":"encodePacked","nodeType":"MemberAccess","src":"15574:16:49","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":42569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15574:84:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":42560,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15567:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":42559,"name":"string","nodeType":"ElementaryTypeName","src":"15567:6:49","typeDescriptions":{}}},"id":42570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15567:92:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":42558,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"15560:6:49","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":42571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15560:100:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42572,"nodeType":"ExpressionStatement","src":"15560:100:49"}]}},"id":42587,"nodeType":"IfStatement","src":"15362:491:49","trueBody":{"id":42552,"nodeType":"Block","src":"15438:31:49","statements":[{"functionReturnParameters":42503,"id":42551,"nodeType":"Return","src":"15452:7:49"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_validate","nameLocation":"14781:9:49","parameters":{"id":42502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42496,"mutability":"mutable","name":"contractName","nameLocation":"14805:12:49","nodeType":"VariableDeclaration","scope":42589,"src":"14791:26:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":42495,"name":"string","nodeType":"ElementaryTypeName","src":"14791:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":42499,"mutability":"mutable","name":"opts","nameLocation":"14834:4:49","nodeType":"VariableDeclaration","scope":42589,"src":"14819:19:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options"},"typeName":{"id":42498,"nodeType":"UserDefinedTypeName","pathNode":{"id":42497,"name":"Options","nameLocations":["14819:7:49"],"nodeType":"IdentifierPath","referencedDeclaration":41160,"src":"14819:7:49"},"referencedDeclaration":41160,"src":"14819:7:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_storage_ptr","typeString":"struct Options"}},"visibility":"internal"},{"constant":false,"id":42501,"mutability":"mutable","name":"requireReference","nameLocation":"14845:16:49","nodeType":"VariableDeclaration","scope":42589,"src":"14840:21:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":42500,"name":"bool","nodeType":"ElementaryTypeName","src":"14840:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14790:72:49"},"returnParameters":{"id":42503,"nodeType":"ParameterList","parameters":[],"src":"14871:0:49"},"scope":42908,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":42804,"nodeType":"FunctionDefinition","src":"15865:1605:49","nodes":[],"body":{"id":42803,"nodeType":"Block","src":"16037:1433:49","nodes":[],"statements":[{"assignments":[42603],"declarations":[{"constant":false,"id":42603,"mutability":"mutable","name":"outDir","nameLocation":"16061:6:49","nodeType":"VariableDeclaration","scope":42803,"src":"16047:20:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":42602,"name":"string","nodeType":"ElementaryTypeName","src":"16047:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":42607,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":42604,"name":"Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45150,"src":"16070:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Utils_$45150_$","typeString":"type(library Utils)"}},"id":42605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16076:9:49","memberName":"getOutDir","nodeType":"MemberAccess","referencedDeclaration":44709,"src":"16070:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":42606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16070:17:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"16047:40:49"},{"assignments":[42612],"declarations":[{"constant":false,"id":42612,"mutability":"mutable","name":"inputBuilder","nameLocation":"16114:12:49","nodeType":"VariableDeclaration","scope":42803,"src":"16098:28:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":42610,"name":"string","nodeType":"ElementaryTypeName","src":"16098:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":42611,"nodeType":"ArrayTypeName","src":"16098:8:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"id":42618,"initialValue":{"arguments":[{"hexValue":"323535","id":42616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16142:3:49","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"}],"id":42615,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"16129:12:49","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (string memory[] memory)"},"typeName":{"baseType":{"id":42613,"name":"string","nodeType":"ElementaryTypeName","src":"16133:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":42614,"nodeType":"ArrayTypeName","src":"16133:8:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}}},"id":42617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16129:17:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"16098:48:49"},{"assignments":[42620],"declarations":[{"constant":false,"id":42620,"mutability":"mutable","name":"i","nameLocation":"16163:1:49","nodeType":"VariableDeclaration","scope":42803,"src":"16157:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":42619,"name":"uint8","nodeType":"ElementaryTypeName","src":"16157:5:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":42622,"initialValue":{"hexValue":"30","id":42621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16167:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16157:11:49"},{"expression":{"id":42628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":42623,"name":"inputBuilder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42612,"src":"16179:12:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":42626,"indexExpression":{"id":42625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16192:3:49","subExpression":{"id":42624,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42620,"src":"16192:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16179:17:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"6e7078","id":42627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16199:5:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_169a1000665635df106bbe8ab6519d10dd57f5c196b68846e9722c94b7bf89aa","typeString":"literal_string \"npx\""},"value":"npx"},"src":"16179:25:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":42629,"nodeType":"ExpressionStatement","src":"16179:25:49"},{"expression":{"id":42643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":42630,"name":"inputBuilder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42612,"src":"16214:12:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":42633,"indexExpression":{"id":42632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16227:3:49","subExpression":{"id":42631,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42620,"src":"16227:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16214:17:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"406f70656e7a657070656c696e2f75706772616465732d636f726540","id":42638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16258:30:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_459e684ed08b96f40b9b516154105232b46d6e25e3ebbcc2460d0ad2691a0f84","typeString":"literal_string \"@openzeppelin/upgrades-core@\""},"value":"@openzeppelin/upgrades-core@"},{"expression":{"id":42639,"name":"Versions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45159,"src":"16290:8:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Versions_$45159_$","typeString":"type(library Versions)"}},"id":42640,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16299:13:49","memberName":"UPGRADES_CORE","nodeType":"MemberAccess","referencedDeclaration":45155,"src":"16290:22:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_459e684ed08b96f40b9b516154105232b46d6e25e3ebbcc2460d0ad2691a0f84","typeString":"literal_string \"@openzeppelin/upgrades-core@\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":42636,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16241:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":42637,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16245:12:49","memberName":"encodePacked","nodeType":"MemberAccess","src":"16241:16:49","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":42641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16241:72:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":42635,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16234:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":42634,"name":"string","nodeType":"ElementaryTypeName","src":"16234:6:49","typeDescriptions":{}}},"id":42642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16234:80:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"16214:100:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":42644,"nodeType":"ExpressionStatement","src":"16214:100:49"},{"expression":{"id":42650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":42645,"name":"inputBuilder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42612,"src":"16324:12:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":42648,"indexExpression":{"id":42647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16337:3:49","subExpression":{"id":42646,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42620,"src":"16337:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16324:17:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"76616c6964617465","id":42649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16344:10:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_67d5dd63d7dc0de108d32d55bd8a8f2b62fd23d0938f9b5b2c6003ec0cb829ca","typeString":"literal_string \"validate\""},"value":"validate"},"src":"16324:30:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":42651,"nodeType":"ExpressionStatement","src":"16324:30:49"},{"expression":{"id":42664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":42652,"name":"inputBuilder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42612,"src":"16364:12:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":42655,"indexExpression":{"id":42654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16377:3:49","subExpression":{"id":42653,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42620,"src":"16377:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16364:17:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":42660,"name":"outDir","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42603,"src":"16408:6:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"2f6275696c642d696e666f","id":42661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16416:13:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_69ae65ff9142d8f87b3884b153358f78dcd4f6339bb046b9a6d16c966fa813af","typeString":"literal_string \"/build-info\""},"value":"/build-info"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_69ae65ff9142d8f87b3884b153358f78dcd4f6339bb046b9a6d16c966fa813af","typeString":"literal_string \"/build-info\""}],"expression":{"id":42658,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16391:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":42659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16395:12:49","memberName":"encodePacked","nodeType":"MemberAccess","src":"16391:16:49","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":42662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16391:39:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":42657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16384:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":42656,"name":"string","nodeType":"ElementaryTypeName","src":"16384:6:49","typeDescriptions":{}}},"id":42663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16384:47:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"16364:67:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":42665,"nodeType":"ExpressionStatement","src":"16364:67:49"},{"expression":{"id":42671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":42666,"name":"inputBuilder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42612,"src":"16441:12:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":42669,"indexExpression":{"id":42668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16454:3:49","subExpression":{"id":42667,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42620,"src":"16454:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16441:17:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"2d2d636f6e7472616374","id":42670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16461:12:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_3b0e6b1164482541e4d24a6cb6f13807add41f2d9d48e3c79f2d3f8a98381b61","typeString":"literal_string \"--contract\""},"value":"--contract"},"src":"16441:32:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":42672,"nodeType":"ExpressionStatement","src":"16441:32:49"},{"expression":{"id":42682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":42673,"name":"inputBuilder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42612,"src":"16483:12:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":42676,"indexExpression":{"id":42675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16496:3:49","subExpression":{"id":42674,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42620,"src":"16496:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16483:17:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":42679,"name":"contractName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42591,"src":"16531:12:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":42680,"name":"outDir","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42603,"src":"16545:6:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":42677,"name":"Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45150,"src":"16503:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Utils_$45150_$","typeString":"type(library Utils)"}},"id":42678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16509:21:49","memberName":"getFullyQualifiedName","nodeType":"MemberAccess","referencedDeclaration":44441,"src":"16503:27:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (string memory,string memory) view returns (string memory)"}},"id":42681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16503:49:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"16483:69:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":42683,"nodeType":"ExpressionStatement","src":"16483:69:49"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"expression":{"id":42686,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42594,"src":"16573:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}},"id":42687,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16578:17:49","memberName":"referenceContract","nodeType":"MemberAccess","referencedDeclaration":41146,"src":"16573:22:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":42685,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16567:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":42684,"name":"bytes","nodeType":"ElementaryTypeName","src":"16567:5:49","typeDescriptions":{}}},"id":42688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16567:29:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":42689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16597:6:49","memberName":"length","nodeType":"MemberAccess","src":"16567:36:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":42690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16607:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16567:41:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42712,"nodeType":"IfStatement","src":"16563:198:49","trueBody":{"id":42711,"nodeType":"Block","src":"16610:151:49","statements":[{"expression":{"id":42697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":42692,"name":"inputBuilder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42612,"src":"16624:12:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":42695,"indexExpression":{"id":42694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16637:3:49","subExpression":{"id":42693,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42620,"src":"16637:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16624:17:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"2d2d7265666572656e6365","id":42696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16644:13:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_0d26cccc713a3e21239b15a882ab87c502303b0e01681e8e02e3264e9cc6764e","typeString":"literal_string \"--reference\""},"value":"--reference"},"src":"16624:33:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":42698,"nodeType":"ExpressionStatement","src":"16624:33:49"},{"expression":{"id":42709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":42699,"name":"inputBuilder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42612,"src":"16671:12:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":42702,"indexExpression":{"id":42701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16684:3:49","subExpression":{"id":42700,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42620,"src":"16684:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16671:17:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":42705,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42594,"src":"16719:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}},"id":42706,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16724:17:49","memberName":"referenceContract","nodeType":"MemberAccess","referencedDeclaration":41146,"src":"16719:22:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":42707,"name":"outDir","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42603,"src":"16743:6:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":42703,"name":"Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45150,"src":"16691:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Utils_$45150_$","typeString":"type(library Utils)"}},"id":42704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16697:21:49","memberName":"getFullyQualifiedName","nodeType":"MemberAccess","referencedDeclaration":44441,"src":"16691:27:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$","typeString":"function (string memory,string memory) view returns (string memory)"}},"id":42708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16691:59:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"16671:79:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":42710,"nodeType":"ExpressionStatement","src":"16671:79:49"}]}},{"condition":{"expression":{"id":42713,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42594,"src":"16775:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}},"id":42714,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16780:22:49","memberName":"unsafeSkipStorageCheck","nodeType":"MemberAccess","referencedDeclaration":41154,"src":"16775:27:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":42723,"name":"requireReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42596,"src":"16885:16:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42732,"nodeType":"IfStatement","src":"16881:87:49","trueBody":{"id":42731,"nodeType":"Block","src":"16903:65:49","statements":[{"expression":{"id":42729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":42724,"name":"inputBuilder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42612,"src":"16917:12:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":42727,"indexExpression":{"id":42726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16930:3:49","subExpression":{"id":42725,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42620,"src":"16930:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16917:17:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"2d2d726571756972655265666572656e6365","id":42728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16937:20:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d766f59bf6d0ab60edca901c72671bf43dc1fb2f39735502e15ab94ce777b39","typeString":"literal_string \"--requireReference\""},"value":"--requireReference"},"src":"16917:40:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":42730,"nodeType":"ExpressionStatement","src":"16917:40:49"}]}},"id":42733,"nodeType":"IfStatement","src":"16771:197:49","trueBody":{"id":42722,"nodeType":"Block","src":"16804:71:49","statements":[{"expression":{"id":42720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":42715,"name":"inputBuilder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42612,"src":"16818:12:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":42718,"indexExpression":{"id":42717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16831:3:49","subExpression":{"id":42716,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42620,"src":"16831:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16818:17:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"2d2d756e73616665536b697053746f72616765436865636b","id":42719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16838:26:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_8cf70432acc3bb1de86bbee2acff17d879f3e10f2f3bd33aae966886545656da","typeString":"literal_string \"--unsafeSkipStorageCheck\""},"value":"--unsafeSkipStorageCheck"},"src":"16818:46:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":42721,"nodeType":"ExpressionStatement","src":"16818:46:49"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":42741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"expression":{"id":42736,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42594,"src":"16988:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}},"id":42737,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16993:11:49","memberName":"unsafeAllow","nodeType":"MemberAccess","referencedDeclaration":41150,"src":"16988:16:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":42735,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16982:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":42734,"name":"bytes","nodeType":"ElementaryTypeName","src":"16982:5:49","typeDescriptions":{}}},"id":42738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16982:23:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":42739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17006:6:49","memberName":"length","nodeType":"MemberAccess","src":"16982:30:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":42740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17016:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16982:35:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42758,"nodeType":"IfStatement","src":"16978:151:49","trueBody":{"id":42757,"nodeType":"Block","src":"17019:110:49","statements":[{"expression":{"id":42747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":42742,"name":"inputBuilder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42612,"src":"17033:12:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":42745,"indexExpression":{"id":42744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17046:3:49","subExpression":{"id":42743,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42620,"src":"17046:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17033:17:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"2d2d756e73616665416c6c6f77","id":42746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17053:15:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_858b2d7962c0a21f136f10e55f819f574e5af3859efccbbe40131831be0950ac","typeString":"literal_string \"--unsafeAllow\""},"value":"--unsafeAllow"},"src":"17033:35:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":42748,"nodeType":"ExpressionStatement","src":"17033:35:49"},{"expression":{"id":42755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":42749,"name":"inputBuilder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42612,"src":"17082:12:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":42752,"indexExpression":{"id":42751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17095:3:49","subExpression":{"id":42750,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42620,"src":"17095:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17082:17:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":42753,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42594,"src":"17102:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}},"id":42754,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17107:11:49","memberName":"unsafeAllow","nodeType":"MemberAccess","referencedDeclaration":41150,"src":"17102:16:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"17082:36:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":42756,"nodeType":"ExpressionStatement","src":"17082:36:49"}]}},{"condition":{"expression":{"id":42759,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42594,"src":"17143:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}},"id":42760,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17148:18:49","memberName":"unsafeAllowRenames","nodeType":"MemberAccess","referencedDeclaration":41152,"src":"17143:23:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42769,"nodeType":"IfStatement","src":"17139:96:49","trueBody":{"id":42768,"nodeType":"Block","src":"17168:67:49","statements":[{"expression":{"id":42766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":42761,"name":"inputBuilder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42612,"src":"17182:12:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":42764,"indexExpression":{"id":42763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17195:3:49","subExpression":{"id":42762,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42620,"src":"17195:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17182:17:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"2d2d756e73616665416c6c6f7752656e616d6573","id":42765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17202:22:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_b001052c52501f0fe7f938db35582424cc6ff35d81b60d3f3e7605ce1ae35603","typeString":"literal_string \"--unsafeAllowRenames\""},"value":"--unsafeAllowRenames"},"src":"17182:42:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":42767,"nodeType":"ExpressionStatement","src":"17182:42:49"}]}},{"assignments":[42774],"declarations":[{"constant":false,"id":42774,"mutability":"mutable","name":"inputs","nameLocation":"17324:6:49","nodeType":"VariableDeclaration","scope":42803,"src":"17308:22:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":42772,"name":"string","nodeType":"ElementaryTypeName","src":"17308:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":42773,"nodeType":"ArrayTypeName","src":"17308:8:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"id":42780,"initialValue":{"arguments":[{"id":42778,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42620,"src":"17346:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":42777,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"17333:12:49","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (string memory[] memory)"},"typeName":{"baseType":{"id":42775,"name":"string","nodeType":"ElementaryTypeName","src":"17337:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":42776,"nodeType":"ArrayTypeName","src":"17337:8:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}}},"id":42779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17333:15:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"17308:40:49"},{"body":{"id":42799,"nodeType":"Block","src":"17388:52:49","statements":[{"expression":{"id":42797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":42791,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42774,"src":"17402:6:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":42793,"indexExpression":{"id":42792,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42782,"src":"17409:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17402:9:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":42794,"name":"inputBuilder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42612,"src":"17414:12:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"id":42796,"indexExpression":{"id":42795,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42782,"src":"17427:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17414:15:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"17402:27:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":42798,"nodeType":"ExpressionStatement","src":"17402:27:49"}]},"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":42787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42785,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42782,"src":"17376:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":42786,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42620,"src":"17380:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"17376:5:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42800,"initializationExpression":{"assignments":[42782],"declarations":[{"constant":false,"id":42782,"mutability":"mutable","name":"j","nameLocation":"17369:1:49","nodeType":"VariableDeclaration","scope":42800,"src":"17363:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":42781,"name":"uint8","nodeType":"ElementaryTypeName","src":"17363:5:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":42784,"initialValue":{"hexValue":"30","id":42783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17373:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17363:11:49"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":42789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17383:3:49","subExpression":{"id":42788,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42782,"src":"17383:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":42790,"nodeType":"ExpressionStatement","src":"17383:3:49"},"nodeType":"ForStatement","src":"17358:82:49"},{"expression":{"id":42801,"name":"inputs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42774,"src":"17457:6:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string memory[] memory"}},"functionReturnParameters":42601,"id":42802,"nodeType":"Return","src":"17450:13:49"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_buildValidateCommand","nameLocation":"15874:21:49","parameters":{"id":42597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42591,"mutability":"mutable","name":"contractName","nameLocation":"15919:12:49","nodeType":"VariableDeclaration","scope":42804,"src":"15905:26:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":42590,"name":"string","nodeType":"ElementaryTypeName","src":"15905:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":42594,"mutability":"mutable","name":"opts","nameLocation":"15956:4:49","nodeType":"VariableDeclaration","scope":42804,"src":"15941:19:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options"},"typeName":{"id":42593,"nodeType":"UserDefinedTypeName","pathNode":{"id":42592,"name":"Options","nameLocations":["15941:7:49"],"nodeType":"IdentifierPath","referencedDeclaration":41160,"src":"15941:7:49"},"referencedDeclaration":41160,"src":"15941:7:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_storage_ptr","typeString":"struct Options"}},"visibility":"internal"},{"constant":false,"id":42596,"mutability":"mutable","name":"requireReference","nameLocation":"15975:16:49","nodeType":"VariableDeclaration","scope":42804,"src":"15970:21:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":42595,"name":"bool","nodeType":"ElementaryTypeName","src":"15970:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15895:102:49"},"returnParameters":{"id":42601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42600,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42804,"src":"16020:15:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_string_memory_ptr_$dyn_memory_ptr","typeString":"string[]"},"typeName":{"baseType":{"id":42598,"name":"string","nodeType":"ElementaryTypeName","src":"16020:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"id":42599,"nodeType":"ArrayTypeName","src":"16020:8:49","typeDescriptions":{"typeIdentifier":"t_array$_t_string_storage_$dyn_storage_ptr","typeString":"string[]"}},"visibility":"internal"}],"src":"16019:17:49"},"scope":42908,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":42836,"nodeType":"FunctionDefinition","src":"17476:380:49","nodes":[],"body":{"id":42835,"nodeType":"Block","src":"17628:228:49","nodes":[],"statements":[{"condition":{"expression":{"expression":{"id":42816,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42811,"src":"17642:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}},"id":42817,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17647:8:49","memberName":"defender","nodeType":"MemberAccess","referencedDeclaration":41159,"src":"17642:13:49","typeDescriptions":{"typeIdentifier":"t_struct$_DefenderOptions_$41179_memory_ptr","typeString":"struct DefenderOptions memory"}},"id":42818,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17656:17:49","memberName":"useDefenderDeploy","nodeType":"MemberAccess","referencedDeclaration":41163,"src":"17642:31:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":42833,"nodeType":"Block","src":"17780:70:49","statements":[{"expression":{"arguments":[{"id":42829,"name":"contractName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42806,"src":"17809:12:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":42830,"name":"constructorData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42808,"src":"17823:15:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":42828,"name":"_deploy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42893,"src":"17801:7:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (string memory,bytes memory) returns (address)"}},"id":42831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17801:38:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":42815,"id":42832,"nodeType":"Return","src":"17794:45:49"}]},"id":42834,"nodeType":"IfStatement","src":"17638:212:49","trueBody":{"id":42827,"nodeType":"Block","src":"17675:99:49","statements":[{"expression":{"arguments":[{"id":42821,"name":"contractName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42806,"src":"17718:12:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":42822,"name":"constructorData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42808,"src":"17732:15:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"id":42823,"name":"opts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42811,"src":"17749:4:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options memory"}},"id":42824,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17754:8:49","memberName":"defender","nodeType":"MemberAccess","referencedDeclaration":41159,"src":"17749:13:49","typeDescriptions":{"typeIdentifier":"t_struct$_DefenderOptions_$41179_memory_ptr","typeString":"struct DefenderOptions memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_struct$_DefenderOptions_$41179_memory_ptr","typeString":"struct DefenderOptions memory"}],"expression":{"id":42819,"name":"DefenderDeploy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44387,"src":"17696:14:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_DefenderDeploy_$44387_$","typeString":"type(library DefenderDeploy)"}},"id":42820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17711:6:49","memberName":"deploy","nodeType":"MemberAccess","referencedDeclaration":43040,"src":"17696:21:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_DefenderOptions_$41179_memory_ptr_$returns$_t_address_$","typeString":"function (string memory,bytes memory,struct DefenderOptions memory) returns (address)"}},"id":42825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17696:67:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":42815,"id":42826,"nodeType":"Return","src":"17689:74:49"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"deploy","nameLocation":"17485:6:49","parameters":{"id":42812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42806,"mutability":"mutable","name":"contractName","nameLocation":"17515:12:49","nodeType":"VariableDeclaration","scope":42836,"src":"17501:26:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":42805,"name":"string","nodeType":"ElementaryTypeName","src":"17501:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":42808,"mutability":"mutable","name":"constructorData","nameLocation":"17550:15:49","nodeType":"VariableDeclaration","scope":42836,"src":"17537:28:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":42807,"name":"bytes","nodeType":"ElementaryTypeName","src":"17537:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":42811,"mutability":"mutable","name":"opts","nameLocation":"17590:4:49","nodeType":"VariableDeclaration","scope":42836,"src":"17575:19:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_memory_ptr","typeString":"struct Options"},"typeName":{"id":42810,"nodeType":"UserDefinedTypeName","pathNode":{"id":42809,"name":"Options","nameLocations":["17575:7:49"],"nodeType":"IdentifierPath","referencedDeclaration":41160,"src":"17575:7:49"},"referencedDeclaration":41160,"src":"17575:7:49","typeDescriptions":{"typeIdentifier":"t_struct$_Options_$41160_storage_ptr","typeString":"struct Options"}},"visibility":"internal"}],"src":"17491:109:49"},"returnParameters":{"id":42815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42814,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42836,"src":"17619:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42813,"name":"address","nodeType":"ElementaryTypeName","src":"17619:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17618:9:49"},"scope":42908,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":42893,"nodeType":"FunctionDefinition","src":"17862:745:49","nodes":[],"body":{"id":42892,"nodeType":"Block","src":"17963:644:49","nodes":[],"statements":[{"assignments":[42846],"declarations":[{"constant":false,"id":42846,"mutability":"mutable","name":"creationCode","nameLocation":"17986:12:49","nodeType":"VariableDeclaration","scope":42892,"src":"17973:25:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":42845,"name":"bytes","nodeType":"ElementaryTypeName","src":"17973:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":42854,"initialValue":{"arguments":[{"id":42852,"name":"contractName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42838,"src":"18037:12:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"arguments":[{"expression":{"id":42848,"name":"Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45150,"src":"18004:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Utils_$45150_$","typeString":"type(library Utils)"}},"id":42849,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18010:17:49","memberName":"CHEATCODE_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":44410,"src":"18004:23:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":42847,"name":"Vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12362,"src":"18001:2:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Vm_$12362_$","typeString":"type(contract Vm)"}},"id":42850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18001:27:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$12362","typeString":"contract Vm"}},"id":42851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18029:7:49","memberName":"getCode","nodeType":"MemberAccess","referencedDeclaration":9306,"src":"18001:35:49","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) view external returns (bytes memory)"}},"id":42853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18001:49:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"17973:77:49"},{"assignments":[42856],"declarations":[{"constant":false,"id":42856,"mutability":"mutable","name":"deployedAddress","nameLocation":"18068:15:49","nodeType":"VariableDeclaration","scope":42892,"src":"18060:23:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42855,"name":"address","nodeType":"ElementaryTypeName","src":"18060:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":42864,"initialValue":{"arguments":[{"arguments":[{"id":42860,"name":"creationCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42846,"src":"18123:12:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":42861,"name":"constructorData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42840,"src":"18137:15:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":42858,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"18106:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":42859,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18110:12:49","memberName":"encodePacked","nodeType":"MemberAccess","src":"18106:16:49","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":42862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18106:47:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":42857,"name":"_deployFromBytecode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42907,"src":"18086:19:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes memory) returns (address)"}},"id":42863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18086:68:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"18060:94:49"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":42870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":42865,"name":"deployedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42856,"src":"18168:15:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":42868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18195:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":42867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18187:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":42866,"name":"address","nodeType":"ElementaryTypeName","src":"18187:7:49","typeDescriptions":{}}},"id":42869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18187:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18168:29:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":42889,"nodeType":"IfStatement","src":"18164:405:49","trueBody":{"id":42888,"nodeType":"Block","src":"18199:370:49","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"4661696c656420746f206465706c6f7920636f6e747261637420","id":42876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18307:28:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_45942a044068f475a72b247d918918cfb3543fa9d2f925dce5c26b7172dbe289","typeString":"literal_string \"Failed to deploy contract \""},"value":"Failed to deploy contract "},{"id":42877,"name":"contractName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42838,"src":"18361:12:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"207573696e6720636f6e7374727563746f7220646174612022","id":42878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18399:27:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_aa9d79cc8375f222c2818bc0c013f6b7c3934b6f21aedb1df102a8f780a1b664","typeString":"literal_string \" using constructor data \"\""},"value":" using constructor data \""},{"arguments":[{"id":42881,"name":"constructorData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42840,"src":"18459:15:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":42880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18452:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":42879,"name":"string","nodeType":"ElementaryTypeName","src":"18452:6:49","typeDescriptions":{}}},"id":42882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18452:23:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"22","id":42883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18501:3:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0","typeString":"literal_string \"\"\""},"value":"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_45942a044068f475a72b247d918918cfb3543fa9d2f925dce5c26b7172dbe289","typeString":"literal_string \"Failed to deploy contract \""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_aa9d79cc8375f222c2818bc0c013f6b7c3934b6f21aedb1df102a8f780a1b664","typeString":"literal_string \" using constructor data \"\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0","typeString":"literal_string \"\"\""}],"expression":{"id":42874,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"18265:3:49","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":42875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18269:12:49","memberName":"encodePacked","nodeType":"MemberAccess","src":"18265:16:49","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":42884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18265:261:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":42873,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18237:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":42872,"name":"string","nodeType":"ElementaryTypeName","src":"18237:6:49","typeDescriptions":{}}},"id":42885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18237:307:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":42871,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"18213:6:49","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":42886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18213:345:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":42887,"nodeType":"ExpressionStatement","src":"18213:345:49"}]}},{"expression":{"id":42890,"name":"deployedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42856,"src":"18585:15:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":42844,"id":42891,"nodeType":"Return","src":"18578:22:49"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_deploy","nameLocation":"17871:7:49","parameters":{"id":42841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42838,"mutability":"mutable","name":"contractName","nameLocation":"17893:12:49","nodeType":"VariableDeclaration","scope":42893,"src":"17879:26:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":42837,"name":"string","nodeType":"ElementaryTypeName","src":"17879:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":42840,"mutability":"mutable","name":"constructorData","nameLocation":"17920:15:49","nodeType":"VariableDeclaration","scope":42893,"src":"17907:28:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":42839,"name":"bytes","nodeType":"ElementaryTypeName","src":"17907:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17878:58:49"},"returnParameters":{"id":42844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42843,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42893,"src":"17954:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42842,"name":"address","nodeType":"ElementaryTypeName","src":"17954:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17953:9:49"},"scope":42908,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":42907,"nodeType":"FunctionDefinition","src":"18613:223:49","nodes":[],"body":{"id":42906,"nodeType":"Block","src":"18691:145:49","nodes":[],"statements":[{"assignments":[42901],"declarations":[{"constant":false,"id":42901,"mutability":"mutable","name":"addr","nameLocation":"18709:4:49","nodeType":"VariableDeclaration","scope":42906,"src":"18701:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42900,"name":"address","nodeType":"ElementaryTypeName","src":"18701:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":42902,"nodeType":"VariableDeclarationStatement","src":"18701:12:49"},{"AST":{"nativeSrc":"18732:77:49","nodeType":"YulBlock","src":"18732:77:49","statements":[{"nativeSrc":"18746:53:49","nodeType":"YulAssignment","src":"18746:53:49","value":{"arguments":[{"kind":"number","nativeSrc":"18761:1:49","nodeType":"YulLiteral","src":"18761:1:49","type":"","value":"0"},{"arguments":[{"name":"bytecode","nativeSrc":"18768:8:49","nodeType":"YulIdentifier","src":"18768:8:49"},{"kind":"number","nativeSrc":"18778:2:49","nodeType":"YulLiteral","src":"18778:2:49","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18764:3:49","nodeType":"YulIdentifier","src":"18764:3:49"},"nativeSrc":"18764:17:49","nodeType":"YulFunctionCall","src":"18764:17:49"},{"arguments":[{"name":"bytecode","nativeSrc":"18789:8:49","nodeType":"YulIdentifier","src":"18789:8:49"}],"functionName":{"name":"mload","nativeSrc":"18783:5:49","nodeType":"YulIdentifier","src":"18783:5:49"},"nativeSrc":"18783:15:49","nodeType":"YulFunctionCall","src":"18783:15:49"}],"functionName":{"name":"create","nativeSrc":"18754:6:49","nodeType":"YulIdentifier","src":"18754:6:49"},"nativeSrc":"18754:45:49","nodeType":"YulFunctionCall","src":"18754:45:49"},"variableNames":[{"name":"addr","nativeSrc":"18746:4:49","nodeType":"YulIdentifier","src":"18746:4:49"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":42901,"isOffset":false,"isSlot":false,"src":"18746:4:49","valueSize":1},{"declaration":42895,"isOffset":false,"isSlot":false,"src":"18768:8:49","valueSize":1},{"declaration":42895,"isOffset":false,"isSlot":false,"src":"18789:8:49","valueSize":1}],"id":42903,"nodeType":"InlineAssembly","src":"18723:86:49"},{"expression":{"id":42904,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42901,"src":"18825:4:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":42899,"id":42905,"nodeType":"Return","src":"18818:11:49"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_deployFromBytecode","nameLocation":"18622:19:49","parameters":{"id":42896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42895,"mutability":"mutable","name":"bytecode","nameLocation":"18655:8:49","nodeType":"VariableDeclaration","scope":42907,"src":"18642:21:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":42894,"name":"bytes","nodeType":"ElementaryTypeName","src":"18642:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18641:23:49"},"returnParameters":{"id":42899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42898,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":42907,"src":"18682:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":42897,"name":"address","nodeType":"ElementaryTypeName","src":"18682:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18681:9:49"},"scope":42908,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[],"canonicalName":"Core","contractDependencies":[],"contractKind":"library","documentation":{"id":41946,"nodeType":"StructuredDocumentation","src":"575:194:49","text":" @dev Internal helper methods to validate/deploy implementations and perform upgrades.\n WARNING: DO NOT USE DIRECTLY. Use Upgrades.sol, LegacyUpgrades.sol or Defender.sol instead."},"fullyImplemented":true,"linearizedBaseContracts":[42908],"name":"Core","nameLocation":"778:4:49","scope":42909,"usedErrors":[],"usedEvents":[]}],"license":"MIT"},"id":49}