@ensuro/account-abstraction
Version:
ERC-4337 related contracts by the Ensuro Team
628 lines • 35.2 kB
JSON
{
"_format": "hh3-artifact-1",
"contractName": "AccessControlAccount",
"sourceName": "contracts/AccessControlAccount.sol",
"abi": [
{
"inputs": [
{
"internalType": "contract IEntryPoint",
"name": "anEntryPoint",
"type": "address"
},
{
"internalType": "address",
"name": "admin",
"type": "address"
},
{
"internalType": "address[]",
"name": "executors",
"type": "address[]"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [],
"name": "ECDSAInvalidSignature",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "length",
"type": "uint256"
}
],
"name": "ECDSAInvalidSignatureLength",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "ECDSAInvalidSignatureS",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "error",
"type": "bytes"
}
],
"name": "ExecuteError",
"type": "error"
},
{
"inputs": [],
"name": "FailedCall",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RequiredEntryPointOrExecutor",
"type": "error"
},
{
"inputs": [],
"name": "WrongArrayLength",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "EXECUTOR_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "WITHDRAW_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "addDeposit",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "entryPoint",
"outputs": [
{
"internalType": "contract IEntryPoint",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "dest",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "func",
"type": "bytes"
}
],
"name": "execute",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"internalType": "struct BaseAccount.Call[]",
"name": "calls",
"type": "tuple[]"
}
],
"name": "executeBatch",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "dest",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "value",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "func",
"type": "bytes[]"
}
],
"name": "executeBatch",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getDeposit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getNonce",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "initCode",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "callData",
"type": "bytes"
},
{
"internalType": "bytes32",
"name": "accountGasLimits",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "preVerificationGas",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "gasFees",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "paymasterAndData",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "signature",
"type": "bytes"
}
],
"internalType": "struct PackedUserOperation",
"name": "userOp",
"type": "tuple"
},
{
"internalType": "bytes32",
"name": "userOpHash",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "missingAccountFunds",
"type": "uint256"
}
],
"name": "validateUserOp",
"outputs": [
{
"internalType": "uint256",
"name": "validationData",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "withdrawAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "withdrawDepositTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x60a060405234801561000f575f5ffd5b506040516116b63803806116b683398101604081905261002e91610190565b6001600160a01b0383166080526100455f836100ac565b505f5b81518110156100a35761009a7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6383838151811061008757610087610282565b60200260200101516100ac60201b60201c565b50600101610048565b50505050610296565b5f828152602081815260408083206001600160a01b038516845290915281205460ff1661014c575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556101043390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161014f565b505f5b92915050565b6001600160a01b0381168114610169575f5ffd5b50565b805161017781610155565b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f606084860312156101a2575f5ffd5b83516101ad81610155565b60208501519093506101be81610155565b60408501519092506001600160401b038111156101d9575f5ffd5b8401601f810186136101e9575f5ffd5b80516001600160401b038111156102025761020261017c565b604051600582901b90603f8201601f191681016001600160401b03811182821017156102305761023061017c565b60405291825260208184018101929081018984111561024d575f5ffd5b6020850194505b83851015610273576102658561016c565b815260209485019401610254565b50809450505050509250925092565b634e487b7160e01b5f52603260045260245ffd5b6080516113de6102d85f395f81816102c5015281816106d70152818161077d015281816108870152818161091c0152818161097a0152610c5d01526113de5ff3fe608060405260043610610108575f3560e01c80634d44560d11610092578063b61d27f611610062578063b61d27f6146102ef578063c399ec881461030e578063d087d28814610322578063d547741f14610336578063e02023a114610355575f5ffd5b80634d44560d1461025b57806391d148541461027a578063a217fddf14610299578063b0d691fe146102ac575f5ffd5b80632f2ff15d116100d85780632f2ff15d146101d557806334fcd5be146101f657806336568abe1461021557806347e1da2a146102345780634a58db1914610253575f5ffd5b806301ffc9a71461011357806307bd02651461014757806319822f7c14610188578063248a9ca3146101a7575f5ffd5b3661010f57005b5f5ffd5b34801561011e575f5ffd5b5061013261012d36600461100d565b610388565b60405190151581526020015b60405180910390f35b348015610152575f5ffd5b5061017a7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b60405190815260200161013e565b348015610193575f5ffd5b5061017a6101a2366004611034565b6103be565b3480156101b2575f5ffd5b5061017a6101c1366004611083565b5f9081526020819052604090206001015490565b3480156101e0575f5ffd5b506101f46101ef3660046110ae565b6103e3565b005b348015610201575f5ffd5b506101f4610210366004611124565b61040d565b348015610220575f5ffd5b506101f461022f3660046110ae565b6104f7565b34801561023f575f5ffd5b506101f461024e366004611163565b61052f565b6101f46106d5565b348015610266575f5ffd5b506101f4610275366004611202565b610751565b348015610285575f5ffd5b506101326102943660046110ae565b6107f7565b3480156102a4575f5ffd5b5061017a5f81565b3480156102b7575f5ffd5b506040516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016815260200161013e565b3480156102fa575f5ffd5b506101f461030936600461122c565b61081f565b348015610319575f5ffd5b5061017a610868565b34801561032d575f5ffd5b5061017a6108f6565b348015610341575f5ffd5b506101f46103503660046110ae565b61094b565b348015610360575f5ffd5b5061017a7f5d8e12c39142ff96d79d04d15d1ba1269e4fe57bb9d26f43523628b34ba108ec81565b5f6001600160e01b03198216637965db0b60e01b14806103b857506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f6103c761096f565b6103d184846109e9565b90506103dc82610aab565b9392505050565b5f828152602081905260409020600101546103fd81610af0565b6104078383610afa565b50505050565b610415610b89565b805f5b818110156104075736848483818110610433576104336112b1565b905060200281019061044591906112c5565b90505f6104a361045860208401846112e3565b602084013561046a60408601866112fe565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610b91565b9050806104ed57836001036104bf576104ba610ba7565b6104ed565b826104c95f610bb8565b604051635a15467560e01b81526004016104e4929190611341565b60405180910390fd5b5050600101610418565b6001600160a01b03811633146105205760405163334bd91960e11b815260040160405180910390fd5b61052a8282610be9565b505050565b610537610c52565b8481141580610550575082158015906105505750828114155b1561056e5760405163150072e360e11b815260040160405180910390fd5b5f839003610616575f5b8581101561061057610607878783818110610595576105956112b1565b90506020020160208101906105aa91906112e3565b8484848181106105bc576105bc6112b1565b90506020028101906105ce91906112fe565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509250610cd2915050565b50600101610578565b506106cd565b5f5b858110156106cb576106c2878783818110610635576106356112b1565b905060200201602081019061064a91906112e3565b84848481811061065c5761065c6112b1565b905060200281019061066e91906112fe565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508991508690508181106106b6576106b66112b1565b90506020020135610cd2565b50600101610618565b505b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000060405163b760faf960e01b81523060048201526001600160a01b03919091169063b760faf99034906024015f604051808303818588803b158015610738575f5ffd5b505af115801561074a573d5f5f3e3d5ffd5b5050505050565b7f5d8e12c39142ff96d79d04d15d1ba1269e4fe57bb9d26f43523628b34ba108ec61077b81610af0565b7f000000000000000000000000000000000000000000000000000000000000000060405163040b850f60e31b81526001600160a01b03858116600483015260248201859052919091169063205c2878906044015f604051808303815f87803b1580156107e5575f5ffd5b505af11580156106cb573d5f5f3e3d5ffd5b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b610827610c52565b61074a8483838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250610cd2915050565b6040516370a0823160e01b81523060048201525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa1580156108cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f1919061137d565b905090565b604051631aab3f0d60e11b81523060048201525f60248201819052906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335567e1a906044016108b2565b5f8281526020819052604090206001015461096581610af0565b6104078383610be9565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109e75760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016104e4565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81205f610a6382610a2a6101008801886112fe565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610d9e92505050565b9050610a8f7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63826107f7565b610a9e576001925050506103b8565b505f949350505050565b50565b8015610aa8576040515f90339083908381818185875af1925050503d805f811461074a576040519150601f19603f3d011682016040523d82523d5f602084013e61074a565b610aa88133610dc6565b5f610b0583836107f7565b610b82575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610b3a3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016103b8565b505f6103b8565b6109e761096f565b5f5f5f845160208601878987f195945050505050565b6109e7610bb35f610bb8565b610e03565b60603d8215610bcc5782811115610bcc5750815b604051602082018101604052818152815f602083013e9392505050565b5f610bf483836107f7565b15610b82575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103b8565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590610cb25750610cb07fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63336107f7565b155b156109e757604051633c687f6b60e21b81523360048201526024016104e4565b606081471015610cfe5760405163cf47918160e01b8152476004820152602481018390526044016104e4565b5f610d0a858486610e0b565b9050808015610d2b57505f3d1180610d2b57505f856001600160a01b03163b115b15610d4057610d38610e20565b9150506103dc565b8015610d6a57604051639996b31560e01b81526001600160a01b03861660048201526024016104e4565b3d15610d7d57610d78610e39565b610d96565b60405163d6bda27560e01b815260040160405180910390fd5b509392505050565b5f5f5f5f610dac8686610e44565b925092509250610dbc8282610e8d565b5090949350505050565b610dd082826107f7565b610dff5760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016104e4565b5050565b805160208201fd5b5f5f5f83516020850186885af1949350505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f5f5f8351604103610e7b576020840151604085015160608601515f1a610e6d88828585610f45565b955095509550505050610e86565b505081515f91506002905b9250925092565b5f826003811115610ea057610ea0611394565b03610ea9575050565b6001826003811115610ebd57610ebd611394565b03610edb5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610eef57610eef611394565b03610f105760405163fce698f760e01b8152600481018290526024016104e4565b6003826003811115610f2457610f24611394565b03610dff576040516335e2f38360e21b8152600481018290526024016104e4565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610f7e57505f91506003905082611003565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610fcf573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610ffa57505f925060019150829050611003565b92505f91508190505b9450945094915050565b5f6020828403121561101d575f5ffd5b81356001600160e01b0319811681146103dc575f5ffd5b5f5f5f60608486031215611046575f5ffd5b833567ffffffffffffffff81111561105c575f5ffd5b8401610120818703121561106e575f5ffd5b95602085013595506040909401359392505050565b5f60208284031215611093575f5ffd5b5035919050565b6001600160a01b0381168114610aa8575f5ffd5b5f5f604083850312156110bf575f5ffd5b8235915060208301356110d18161109a565b809150509250929050565b5f5f83601f8401126110ec575f5ffd5b50813567ffffffffffffffff811115611103575f5ffd5b6020830191508360208260051b850101111561111d575f5ffd5b9250929050565b5f5f60208385031215611135575f5ffd5b823567ffffffffffffffff81111561114b575f5ffd5b611157858286016110dc565b90969095509350505050565b5f5f5f5f5f5f60608789031215611178575f5ffd5b863567ffffffffffffffff81111561118e575f5ffd5b61119a89828a016110dc565b909750955050602087013567ffffffffffffffff8111156111b9575f5ffd5b6111c589828a016110dc565b909550935050604087013567ffffffffffffffff8111156111e4575f5ffd5b6111f089828a016110dc565b979a9699509497509295939492505050565b5f5f60408385031215611213575f5ffd5b823561121e8161109a565b946020939093013593505050565b5f5f5f5f6060858703121561123f575f5ffd5b843561124a8161109a565b935060208501359250604085013567ffffffffffffffff81111561126c575f5ffd5b8501601f8101871361127c575f5ffd5b803567ffffffffffffffff811115611292575f5ffd5b8760208284010111156112a3575f5ffd5b949793965060200194505050565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126112d9575f5ffd5b9190910192915050565b5f602082840312156112f3575f5ffd5b81356103dc8161109a565b5f5f8335601e19843603018112611313575f5ffd5b83018035915067ffffffffffffffff82111561132d575f5ffd5b60200191503681900382131561111d575f5ffd5b828152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f6020828403121561138d575f5ffd5b5051919050565b634e487b7160e01b5f52602160045260245ffdfea2646970667358221220491d2b258d918821ceda2e7f4dcb1c4371ac2d966aa2cddbec4027cec506283464736f6c634300081e0033",
"deployedBytecode": "0x608060405260043610610108575f3560e01c80634d44560d11610092578063b61d27f611610062578063b61d27f6146102ef578063c399ec881461030e578063d087d28814610322578063d547741f14610336578063e02023a114610355575f5ffd5b80634d44560d1461025b57806391d148541461027a578063a217fddf14610299578063b0d691fe146102ac575f5ffd5b80632f2ff15d116100d85780632f2ff15d146101d557806334fcd5be146101f657806336568abe1461021557806347e1da2a146102345780634a58db1914610253575f5ffd5b806301ffc9a71461011357806307bd02651461014757806319822f7c14610188578063248a9ca3146101a7575f5ffd5b3661010f57005b5f5ffd5b34801561011e575f5ffd5b5061013261012d36600461100d565b610388565b60405190151581526020015b60405180910390f35b348015610152575f5ffd5b5061017a7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b60405190815260200161013e565b348015610193575f5ffd5b5061017a6101a2366004611034565b6103be565b3480156101b2575f5ffd5b5061017a6101c1366004611083565b5f9081526020819052604090206001015490565b3480156101e0575f5ffd5b506101f46101ef3660046110ae565b6103e3565b005b348015610201575f5ffd5b506101f4610210366004611124565b61040d565b348015610220575f5ffd5b506101f461022f3660046110ae565b6104f7565b34801561023f575f5ffd5b506101f461024e366004611163565b61052f565b6101f46106d5565b348015610266575f5ffd5b506101f4610275366004611202565b610751565b348015610285575f5ffd5b506101326102943660046110ae565b6107f7565b3480156102a4575f5ffd5b5061017a5f81565b3480156102b7575f5ffd5b506040516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016815260200161013e565b3480156102fa575f5ffd5b506101f461030936600461122c565b61081f565b348015610319575f5ffd5b5061017a610868565b34801561032d575f5ffd5b5061017a6108f6565b348015610341575f5ffd5b506101f46103503660046110ae565b61094b565b348015610360575f5ffd5b5061017a7f5d8e12c39142ff96d79d04d15d1ba1269e4fe57bb9d26f43523628b34ba108ec81565b5f6001600160e01b03198216637965db0b60e01b14806103b857506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f6103c761096f565b6103d184846109e9565b90506103dc82610aab565b9392505050565b5f828152602081905260409020600101546103fd81610af0565b6104078383610afa565b50505050565b610415610b89565b805f5b818110156104075736848483818110610433576104336112b1565b905060200281019061044591906112c5565b90505f6104a361045860208401846112e3565b602084013561046a60408601866112fe565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610b91565b9050806104ed57836001036104bf576104ba610ba7565b6104ed565b826104c95f610bb8565b604051635a15467560e01b81526004016104e4929190611341565b60405180910390fd5b5050600101610418565b6001600160a01b03811633146105205760405163334bd91960e11b815260040160405180910390fd5b61052a8282610be9565b505050565b610537610c52565b8481141580610550575082158015906105505750828114155b1561056e5760405163150072e360e11b815260040160405180910390fd5b5f839003610616575f5b8581101561061057610607878783818110610595576105956112b1565b90506020020160208101906105aa91906112e3565b8484848181106105bc576105bc6112b1565b90506020028101906105ce91906112fe565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509250610cd2915050565b50600101610578565b506106cd565b5f5b858110156106cb576106c2878783818110610635576106356112b1565b905060200201602081019061064a91906112e3565b84848481811061065c5761065c6112b1565b905060200281019061066e91906112fe565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a92508991508690508181106106b6576106b66112b1565b90506020020135610cd2565b50600101610618565b505b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000060405163b760faf960e01b81523060048201526001600160a01b03919091169063b760faf99034906024015f604051808303818588803b158015610738575f5ffd5b505af115801561074a573d5f5f3e3d5ffd5b5050505050565b7f5d8e12c39142ff96d79d04d15d1ba1269e4fe57bb9d26f43523628b34ba108ec61077b81610af0565b7f000000000000000000000000000000000000000000000000000000000000000060405163040b850f60e31b81526001600160a01b03858116600483015260248201859052919091169063205c2878906044015f604051808303815f87803b1580156107e5575f5ffd5b505af11580156106cb573d5f5f3e3d5ffd5b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b610827610c52565b61074a8483838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250889250610cd2915050565b6040516370a0823160e01b81523060048201525f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa1580156108cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f1919061137d565b905090565b604051631aab3f0d60e11b81523060048201525f60248201819052906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906335567e1a906044016108b2565b5f8281526020819052604090206001015461096581610af0565b6104078383610be9565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109e75760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016104e4565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81205f610a6382610a2a6101008801886112fe565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610d9e92505050565b9050610a8f7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63826107f7565b610a9e576001925050506103b8565b505f949350505050565b50565b8015610aa8576040515f90339083908381818185875af1925050503d805f811461074a576040519150601f19603f3d011682016040523d82523d5f602084013e61074a565b610aa88133610dc6565b5f610b0583836107f7565b610b82575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610b3a3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016103b8565b505f6103b8565b6109e761096f565b5f5f5f845160208601878987f195945050505050565b6109e7610bb35f610bb8565b610e03565b60603d8215610bcc5782811115610bcc5750815b604051602082018101604052818152815f602083013e9392505050565b5f610bf483836107f7565b15610b82575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016103b8565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590610cb25750610cb07fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63336107f7565b155b156109e757604051633c687f6b60e21b81523360048201526024016104e4565b606081471015610cfe5760405163cf47918160e01b8152476004820152602481018390526044016104e4565b5f610d0a858486610e0b565b9050808015610d2b57505f3d1180610d2b57505f856001600160a01b03163b115b15610d4057610d38610e20565b9150506103dc565b8015610d6a57604051639996b31560e01b81526001600160a01b03861660048201526024016104e4565b3d15610d7d57610d78610e39565b610d96565b60405163d6bda27560e01b815260040160405180910390fd5b509392505050565b5f5f5f5f610dac8686610e44565b925092509250610dbc8282610e8d565b5090949350505050565b610dd082826107f7565b610dff5760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016104e4565b5050565b805160208201fd5b5f5f5f83516020850186885af1949350505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f5f5f8351604103610e7b576020840151604085015160608601515f1a610e6d88828585610f45565b955095509550505050610e86565b505081515f91506002905b9250925092565b5f826003811115610ea057610ea0611394565b03610ea9575050565b6001826003811115610ebd57610ebd611394565b03610edb5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610eef57610eef611394565b03610f105760405163fce698f760e01b8152600481018290526024016104e4565b6003826003811115610f2457610f24611394565b03610dff576040516335e2f38360e21b8152600481018290526024016104e4565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610f7e57505f91506003905082611003565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610fcf573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610ffa57505f925060019150829050611003565b92505f91508190505b9450945094915050565b5f6020828403121561101d575f5ffd5b81356001600160e01b0319811681146103dc575f5ffd5b5f5f5f60608486031215611046575f5ffd5b833567ffffffffffffffff81111561105c575f5ffd5b8401610120818703121561106e575f5ffd5b95602085013595506040909401359392505050565b5f60208284031215611093575f5ffd5b5035919050565b6001600160a01b0381168114610aa8575f5ffd5b5f5f604083850312156110bf575f5ffd5b8235915060208301356110d18161109a565b809150509250929050565b5f5f83601f8401126110ec575f5ffd5b50813567ffffffffffffffff811115611103575f5ffd5b6020830191508360208260051b850101111561111d575f5ffd5b9250929050565b5f5f60208385031215611135575f5ffd5b823567ffffffffffffffff81111561114b575f5ffd5b611157858286016110dc565b90969095509350505050565b5f5f5f5f5f5f60608789031215611178575f5ffd5b863567ffffffffffffffff81111561118e575f5ffd5b61119a89828a016110dc565b909750955050602087013567ffffffffffffffff8111156111b9575f5ffd5b6111c589828a016110dc565b909550935050604087013567ffffffffffffffff8111156111e4575f5ffd5b6111f089828a016110dc565b979a9699509497509295939492505050565b5f5f60408385031215611213575f5ffd5b823561121e8161109a565b946020939093013593505050565b5f5f5f5f6060858703121561123f575f5ffd5b843561124a8161109a565b935060208501359250604085013567ffffffffffffffff81111561126c575f5ffd5b8501601f8101871361127c575f5ffd5b803567ffffffffffffffff811115611292575f5ffd5b8760208284010111156112a3575f5ffd5b949793965060200194505050565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126112d9575f5ffd5b9190910192915050565b5f602082840312156112f3575f5ffd5b81356103dc8161109a565b5f5f8335601e19843603018112611313575f5ffd5b83018035915067ffffffffffffffff82111561132d575f5ffd5b60200191503681900382131561111d575f5ffd5b828152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f6020828403121561138d575f5ffd5b5051919050565b634e487b7160e01b5f52602160045260245ffdfea2646970667358221220491d2b258d918821ceda2e7f4dcb1c4371ac2d966aa2cddbec4027cec506283464736f6c634300081e0033",
"linkReferences": {},
"deployedLinkReferences": {},
"immutableReferences": {
"13748": [
{
"length": 32,
"start": 709
},
{
"length": 32,
"start": 1751
},
{
"length": 32,
"start": 1917
},
{
"length": 32,
"start": 2183
},
{
"length": 32,
"start": 2332
},
{
"length": 32,
"start": 2426
},
{
"length": 32,
"start": 3165
}
]
},
"inputSourceName": "project/contracts/AccessControlAccount.sol",
"buildInfoId": "solc-0_8_30-ce7ccc34c8ce5a5834c5c7141e779845a204959a"
}