UNPKG

@etherisc/gif-contracts

Version:

This repository holds the GIF core contracts and tools to develop, test and deploy GIF instances.

1,246 lines 164 kB
{ "abi": [ { "inputs": [ { "internalType": "address", "name": "_controller", "type": "address" }, { "internalType": "bytes", "name": "encoded_initializer", "type": "bytes" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldImplementation", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newImplemntation", "type": "address" } ], "name": "LogCoreContractUpgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "implementation", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ], "allSourcePaths": { "21": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Address.sol", "23": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/StorageSlot.sol", "5": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/interfaces/draft-IERC1822.sol", "52": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/shared/ICoreProxy.sol", "6": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/ERC1967/ERC1967Proxy.sol", "7": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/ERC1967/ERC1967Upgrade.sol", "8": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/Proxy.sol", "89": "contracts/shared/CoreProxy.sol", "9": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/beacon/IBeacon.sol" }, "ast": { "absolutePath": "contracts/shared/CoreProxy.sol", "exportedSymbols": { "Address": [ 26374 ], "CoreProxy": [ 14998 ], "ERC1967Proxy": [ 24111 ], "ERC1967Upgrade": [ 27521 ], "IBeacon": [ 28646 ], "ICoreProxy": [ 24120 ], "IERC1822Proxiable": [ 28636 ], "Proxy": [ 27573 ], "StorageSlot": [ 28706 ] }, "id": 14999, "license": "Apache-2.0", "nodeType": "SourceUnit", "nodes": [ { "id": 14926, "literals": [ "solidity", "0.8", ".2" ], "nodeType": "PragmaDirective", "src": "39:22:89" }, { "absolutePath": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/shared/ICoreProxy.sol", "file": "@etherisc/gif-interface/contracts/shared/ICoreProxy.sol", "id": 14927, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 14999, "sourceUnit": 24121, "src": "64:65:89", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/ERC1967/ERC1967Proxy.sol", "file": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", "id": 14928, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 14999, "sourceUnit": 24112, "src": "130:64:89", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "baseName": { "id": 14929, "name": "ICoreProxy", "nodeType": "IdentifierPath", "referencedDeclaration": 24120, "src": "223:10:89" }, "id": 14930, "nodeType": "InheritanceSpecifier", "src": "223:10:89" }, { "baseName": { "id": 14931, "name": "ERC1967Proxy", "nodeType": "IdentifierPath", "referencedDeclaration": 24111, "src": "240:12:89" }, "id": 14932, "nodeType": "InheritanceSpecifier", "src": "240:12:89" } ], "contractDependencies": [ 24111, 24120, 27521, 27573 ], "contractKind": "contract", "fullyImplemented": true, "id": 14998, "linearizedBaseContracts": [ 14998, 24111, 27521, 27573, 24120 ], "name": "CoreProxy", "nameLocation": "205:9:89", "nodeType": "ContractDefinition", "nodes": [ { "body": { "id": 14944, "nodeType": "Block", "src": "281:114:89", "statements": [ { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 14939, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 14935, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "312:3:89", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 14936, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "312:10:89", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "arguments": [], "expression": { "argumentTypes": [], "id": 14937, "name": "_getAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27381, "src": "326:9:89", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 14938, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "326:11:89", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "312:25:89", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552524f523a4352502d3030313a4e4f545f41444d494e", "id": 14940, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "351:25:89", "typeDescriptions": { "typeIdentifier": "t_stringliteral_0040c7b535fe8d83323ecc73a5169249b6133b5d656b3adacba7405479c95dea", "typeString": "literal_string \"ERROR:CRP-001:NOT_ADMIN\"" }, "value": "ERROR:CRP-001:NOT_ADMIN" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_0040c7b535fe8d83323ecc73a5169249b6133b5d656b3adacba7405479c95dea", "typeString": "literal_string \"ERROR:CRP-001:NOT_ADMIN\"" } ], "id": 14934, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "291:7:89", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 14941, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "291:86:89", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 14942, "nodeType": "ExpressionStatement", "src": "291:86:89" }, { "id": 14943, "nodeType": "PlaceholderStatement", "src": "387:1:89" } ] }, "id": 14945, "name": "onlyAdmin", "nameLocation": "269:9:89", "nodeType": "ModifierDefinition", "parameters": { "id": 14933, "nodeType": "ParameterList", "parameters": [], "src": "278:2:89" }, "src": "260:135:89", "virtual": false, "visibility": "internal" }, { "body": { "id": 14961, "nodeType": "Block", "src": "529:41:89", "statements": [ { "expression": { "arguments": [ { "expression": { "id": 14957, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "552:3:89", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 14958, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "552:10:89", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 14956, "name": "_changeAdmin", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27424, "src": "539:12:89", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 14959, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "539:24:89", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 14960, "nodeType": "ExpressionStatement", "src": "539:24:89" } ] }, "id": 14962, "implemented": true, "kind": "constructor", "modifiers": [ { "arguments": [ { "id": 14952, "name": "_controller", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 14947, "src": "490:11:89", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 14953, "name": "encoded_initializer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 14949, "src": "503:19:89", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "id": 14954, "modifierName": { "id": 14951, "name": "ERC1967Proxy", "nodeType": "IdentifierPath", "referencedDeclaration": 24111, "src": "477:12:89" }, "nodeType": "ModifierInvocation", "src": "477:46:89" } ], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": { "id": 14950, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 14947, "mutability": "mutable", "name": "_controller", "nameLocation": "421:11:89", "nodeType": "VariableDeclaration", "scope": 14962, "src": "413:19:89", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 14946, "name": "address", "nodeType": "ElementaryTypeName", "src": "413:7:89", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 14949, "mutability": "mutable", "name": "encoded_initializer", "nameLocation": "447:19:89", "nodeType": "VariableDeclaration", "scope": 14962, "src": "434:32:89", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 14948, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "434:5:89", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" } ], "src": "412:55:89" }, "returnParameters": { "id": 14955, "nodeType": "ParameterList", "parameters": [], "src": "529:0:89" }, "scope": 14998, "src": "401:169:89", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 14970, "nodeType": "Block", "src": "634:41:89", "statements": [ { "expression": { "arguments": [], "expression": { "argumentTypes": [], "id": 14967, "name": "_implementation", "nodeType": "Identifier", "overloadedDeclarations": [ 24110 ], "referencedDeclaration": 24110, "src": "651:15:89", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 14968, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "651:17:89", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 14966, "id": 14969, "nodeType": "Return", "src": "644:24:89" } ] }, "functionSelector": "5c60da1b", "id": 14971, "implemented": true, "kind": "function", "modifiers": [], "name": "implementation", "nameLocation": "585:14:89", "nodeType": "FunctionDefinition", "parameters": { "id": 14963, "nodeType": "ParameterList", "parameters": [], "src": "599:2:89" }, "returnParameters": { "id": 14966, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 14965, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 14971, "src": "625:7:89", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 14964, "name": "address", "nodeType": "ElementaryTypeName", "src": "625:7:89", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "624:9:89" }, "scope": 14998, "src": "576:99:89", "stateMutability": "view", "virtual": false, "visibility": "external" }, { "body": { "id": 14996, "nodeType": "Block", "src": "811:225:89", "statements": [ { "assignments": [ 14981 ], "declarations": [ { "constant": false, "id": 14981, "mutability": "mutable", "name": "oldImplementation", "nameLocation": "829:17:89", "nodeType": "VariableDeclaration", "scope": 14996, "src": "821:25:89", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 14980, "name": "address", "nodeType": "ElementaryTypeName", "src": "821:7:89", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "id": 14984, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "id": 14982, "name": "_implementation", "nodeType": "Identifier", "overloadedDeclarations": [ 24110 ], "referencedDeclaration": 24110, "src": "850:15:89", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 14983, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "850:17:89", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "821:46:89" }, { "expression": { "arguments": [ { "id": 14986, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 14973, "src": "896:17:89", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 14987, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 14975, "src": "915:4:89", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, { "hexValue": "74727565", "id": 14988, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "921:4:89", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" }, { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 14985, "name": "_upgradeToAndCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27304, "src": "878:17:89", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$", "typeString": "function (address,bytes memory,bool)" } }, "id": 14989, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "878:48:89", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 14990, "nodeType": "ExpressionStatement", "src": "878:48:89" }, { "eventCall": { "arguments": [ { "id": 14992, "name": "oldImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 14981, "src": "979:17:89", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 14993, "name": "newImplementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 14973, "src": "1011:17:89", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 14991, "name": "LogCoreContractUpgraded", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24119, "src": "942:23:89", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)" } }, "id": 14994, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "942:87:89", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 14995, "nodeType": "EmitStatement", "src": "937:92:89" } ] }, "functionSelector": "4f1ef286", "id": 14997, "implemented": true, "kind": "function", "modifiers": [ { "id": 14978, "modifierName": { "id": 14977, "name": "onlyAdmin", "nodeType": "IdentifierPath", "referencedDeclaration": 14945, "src": "797:9:89" }, "nodeType": "ModifierInvocation", "src": "797:9:89" } ], "name": "upgradeToAndCall", "nameLocation": "690:16:89", "nodeType": "FunctionDefinition", "parameters": { "id": 14976, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 14973, "mutability": "mutable", "name": "newImplementation", "nameLocation": "715:17:89", "nodeType": "VariableDeclaration", "scope": 14997, "src": "707:25:89", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 14972, "name": "address", "nodeType": "ElementaryTypeName", "src": "707:7:89", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 14975, "mutability": "mutable", "name": "data", "nameLocation": "749:4:89", "nodeType": "VariableDeclaration", "scope": 14997, "src": "734:19:89", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes" }, "typeName": { "id": 14974, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "734:5:89", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" } ], "src": "706:48:89" }, "returnParameters": { "id": 14979, "nodeType": "ParameterList", "parameters": [], "src": "811:0:89" }, "scope": 14998, "src": "681:355:89", "stateMutability": "payable", "virtual": false, "visibility": "external" } ], "scope": 14999, "src": "196:846:89" } ], "src": "39:1004:89" }, "bytecode": "60806040523480156200001157600080fd5b5060405162000c0c38038062000c0c83398101604081905262000034916200043b565b818162000044828260006200005a565b506200005290503362000097565b5050620005a9565b6200006583620000f2565b600082511180620000735750805b1562000092576200009083836200013460201b620001ae1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000c262000163565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000ef816200019c565b50565b620000fd8162000251565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200015c838360405180606001604052806027815260200162000be56027913962000305565b9392505050565b60006200018d60008051602062000bc583398151915260001b620003eb60201b620001da1760201c565b546001600160a01b0316905090565b6001600160a01b038116620002075760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200023060008051602062000bc583398151915260001b620003eb60201b620001da1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200026781620003ee60201b620001dd1760201c565b620002cb5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001fe565b80620002307f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003eb60201b620001da1760201c565b60606001600160a01b0384163b6200036f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001fe565b600080856001600160a01b0316856040516200038c919062000511565b600060405180830381855af49150503d8060008114620003c9576040519150601f19603f3d011682016040523d82523d6000602084013e620003ce565b606091505b509092509050620003e1828286620003fd565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200040e5750816200015c565b8251156200041f5782518084602001fd5b8160405162461bcd60e51b8152600401620001fe91906200052f565b600080604083850312156200044e578182fd5b82516001600160a01b038116811462000465578283fd5b60208401519092506001600160401b038082111562000482578283fd5b818501915085601f83011262000496578283fd5b815181811115620004ab57620004ab62000593565b604051601f8201601f19908116603f01168101908382118183101715620004d657620004d662000593565b81604052828152886020848701011115620004ef578586fd5b6200050283602083016020880162000564565b80955050505050509250929050565b600082516200052581846020870162000564565b9190910192915050565b60006020825282518060208401526200055081604085016020870162000564565b601f01601f19169190910160400192915050565b60005b838110156200058157818101518382015260200162000567565b83811115620000905750506000910152565b634e487b7160e01b600052604160045260246000fd5b61060c80620005b96000396000f3fe60806040526004361061002d5760003560e01c80634f1ef286146100445780635c60da1b146100575761003c565b3661003c5761003a610088565b005b61003a610088565b61003a6100523660046104a9565b61009a565b34801561006357600080fd5b5061006c61019f565b6040516001600160a01b03909116815260200160405180910390f35b6100986100936101ec565b6101f6565b565b6100a261021f565b6001600160a01b0316336001600160a01b0316146101075760405162461bcd60e51b815260206004820152601760248201527f4552524f523a4352502d3030313a4e4f545f41444d494e00000000000000000060448201526064015b60405180910390fd5b60006101116101ec565b90506101568484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610252915050565b604080516001600160a01b038084168252861660208201527faca1087105eb43beb9d5a0283455ab4c7fc8e7412810dca909839c8c2f8be7b5910160405180910390a150505050565b60006101a96101ec565b905090565b60606101d383836040518060600160405280602781526020016105b06027913961027d565b9392505050565b90565b6001600160a01b03163b151590565b60006101a961035a565b3660008037600080366000845af43d6000803e808015610215573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316905090565b61025b83610382565b6000825111806102685750805b1561021a5761027783836101ae565b50505050565b60606001600160a01b0384163b6102e55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016100fe565b600080856001600160a01b0316856040516103009190610534565b600060405180830381855af49150503d806000811461033b576040519150601f19603f3d011682016040523d82523d6000602084013e610340565b606091505b50915091506103508282866103c2565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610243565b61038b816103fb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156103d15750816101d3565b8251156103e15782518084602001fd5b8160405162461bcd60e51b81526004016100fe9190610550565b6001600160a01b0381163b6104685760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016100fe565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000604084860312156104bd578283fd5b83356001600160a01b03811681146104d3578384fd5b9250602084013567ffffffffffffffff808211156104ef578384fd5b818601915086601f830112610502578384fd5b813581811115610510578485fd5b876020828501011115610521578485fd5b6020830194508093505050509250925092565b60008251610546818460208701610583565b9190910192915050565b600060208252825180602084015261056f816040850160208701610583565b601f01601f19169190910160400192915050565b60005b8381101561059e578181015183820152602001610586565b83811115610277575050600091015256fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220768cbd30aa8b07e6c6bb5ca576b0197ea947e8b703577e49cb92f0b3ea0decd964736f6c63430008020033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", "bytecodeSha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "compiler": { "evm_version": "istanbul", "optimizer": { "enabled": true, "runs": 200 }, "version": "0.8.2+commit.661d1103" }, "contractName": "CoreProxy", "coverageMap": { "branches": { "21": { "Address.verifyCallResult": { "22": [ 7735, 7742, false ], "23": [ 7876, 7897, false ] } }, "23": {}, "5": {}, "52": {}, "6": {}, "7": { "ERC1967Upgrade._upgradeToAndCall": { "24": [ 2364, 2379, true ], "25": [ 2383, 2392, false ] } }, "8": {}, "89": { "CoreProxy.upgradeToAndCall": { "21": [ 312, 337, true ] } }, "9": {} }, "statements": { "21": { "Address.functionDelegateCall": { "6": [ 6677, 6761 ], "12": [ 7119, 7188 ], "13": [ 7276, 7334 ] }, "Address.isContract": { "7": [ 1458, 1488 ] }, "Address.verifyCallResult": { "17": [ 7758, 7775 ], "18": [ 8252, 8272 ] } }, "23": {}, "5": {}, "52": {}, "6": { "ERC1967Proxy._implementation": { "8": [ 1239, 1281 ] } }, "7": { "ERC1967Upgrade._getAdmin": { "9": [ 4171, 4223 ] }, "ERC1967Upgrade._getImplementation": { "14": [ 1373, 1434 ] }, "ERC1967Upgrade._setImplementation": { "19": [ 1605, 1700 ], "20": [ 1710, 1784 ] }, "ERC1967Upgrade._upgradeTo": { "15": [ 1963, 2000 ], "16": [ 2010, 2042 ] }, "ERC1967Upgrade._upgradeToAndCall": { "10": [ 2321, 2350 ], "11": [ 2408, 2461 ] } }, "8": { "Proxy.<fallback>": { "1": [ 2675, 2686 ] }, "Proxy.<receive>": { "0": [ 2898, 2909 ] }, "Proxy._fallback": { "2": [ 2397, 2425 ] } }, "89": { "CoreProxy.implementation": { "5": [ 644, 668 ] }, "CoreProxy.upgradeToAndCall": { "3": [ 878, 926 ], "4": [ 937, 1029 ] } }, "9": {} } }, "dependencies": [ "OpenZeppelin/openzeppelin-contracts@4.7.3/Address", "OpenZeppelin/openzeppelin-contracts@4.7.3/ERC1967Proxy", "OpenZeppelin/openzeppelin-contracts@4.7.3/ERC1967Upgrade", "OpenZeppelin/openzeppelin-contracts@4.7.3/IBeacon", "etherisc/gif-interface@3b0002a/ICoreProxy", "OpenZeppelin/openzeppelin-contracts@4.7.3/IERC1822Proxiable", "OpenZeppelin/openzeppelin-contracts@4.7.3/Proxy", "OpenZeppelin/openzeppelin-contracts@4.7.3/StorageSlot" ], "deployedBytecode": "60806040526004361061002d5760003560e01c80634f1ef286146100445780635c60da1b146100575761003c565b3661003c5761003a610088565b005b61003a610088565b61003a6100523660046104a9565b61009a565b34801561006357600080fd5b5061006c61019f565b6040516001600160a01b03909116815260200160405180910390f35b6100986100936101ec565b6101f6565b565b6100a261021f565b6001600160a01b0316336001600160a01b0316146101075760405162461bcd60e51b815260206004820152601760248201527f4552524f523a4352502d3030313a4e4f545f41444d494e00000000000000000060448201526064015b60405180910390fd5b60006101116101ec565b90506101568484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610252915050565b604080516001600160a01b038084168252861660208201527faca1087105eb43beb9d5a0283455ab4c7fc8e7412810dca909839c8c2f8be7b5910160405180910390a150505050565b60006101a96101ec565b905090565b60606101d383836040518060600160405280602781526020016105b06027913961027d565b9392505050565b90565b6001600160a01b03163b151590565b60006101a961035a565b3660008037600080366000845af43d6000803e808015610215573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316905090565b61025b83610382565b6000825111806102685750805b1561021a5761027783836101ae565b50505050565b60606001600160a01b0384163b6102e55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016100fe565b600080856001600160a01b0316856040516103009190610534565b600060405180830381855af49150503d806000811461033b576040519150601f19603f3d011682016040523d82523d6000602084013e610340565b606091505b50915091506103508282866103c2565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610243565b61038b816103fb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156103d15750816101d3565b8251156103e15782518084602001fd5b8160405162461bcd60e51b81526004016100fe9190610550565b6001600160a01b0381163b6104685760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016100fe565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000604084860312156104bd578283fd5b83356001600160a01b03811681146104d3578384fd5b9250602084013567ffffffffffffffff808211156104ef578384fd5b8186019150