UNPKG

@account-abstraction/contracts

Version:

Account Abstraction (EIP 4337) contracts

567 lines (566 loc) 38.2 kB
{ "_format": "hh-sol-artifact-1", "contractName": "SimpleAccount", "sourceName": "contracts/accounts/SimpleAccount.sol", "abi": [ { "inputs": [ { "internalType": "contract IEntryPoint", "name": "anEntryPoint", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "address", "name": "implementation", "type": "address" } ], "name": "ERC1967InvalidImplementation", "type": "error" }, { "inputs": [], "name": "ERC1967NonPayable", "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": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [], "name": "UUPSUnauthorizedCallContext", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "slot", "type": "bytes32" } ], "name": "UUPSUnsupportedProxiableUUID", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "contract IEntryPoint", "name": "entryPoint", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" } ], "name": "SimpleAccountInitialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "UPGRADE_INTERFACE_VERSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "target", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "bytes", "name": "data", "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": [], "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": "address", "name": "anOwner", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC1155BatchReceived", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC1155Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC721Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "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": "0x60c03461014757601f611a5a38819003918201601f19168301916001600160401b0383118484101761014b5780849260209460405283398101031261014757516001600160a01b0381168103610147573060805260a0525f516020611a3a5f395f51905f525460ff8160401c16610138576002600160401b03196001600160401b038216016100e2575b6040516118da908161016082396080518181816108c401526109b8015260a0518181816101f0015281816103a7015281816105960152818161078601528181610cf501528181610dca0152818161102601526115130152f35b6001600160401b0319166001600160401b039081175f516020611a3a5f395f51905f52556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f610089565b63f92ee8a960e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c90816301ffc9a71461117157508063150b7a02146110e457806319822f7c14610f9e57806334fcd5be14610e4e5780634a58db1914610d895780634d44560d14610c845780634f1ef2861461093c57806352d1902d1461087e5780638da5cb5b1461082d578063ad3cb1cc146107aa578063b0d691fe1461073b578063b61d27f6146106a1578063bc197c81146105cf578063c399ec881461051d578063c4d66de81461026d578063d087d288146101715763f23a6e610361000f573461016e5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e5761011661125e565b5061011f611281565b5060843567ffffffffffffffff811161016c576101409036906004016112a4565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b505b80fd5b503461016e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e57604051907f35567e1a00000000000000000000000000000000000000000000000000000000825230600483015280602483015260208260448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610261579061022a575b602090604051908152f35b506020813d602011610259575b8161024460209383611303565b81010312610255576020905161021f565b5f80fd5b3d9150610237565b604051903d90823e3d90fd5b503461016e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e576102a561125e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549060ff8260401c16159167ffffffffffffffff811680159081610515575b600114908161050b575b159081610502575b506104da5790818360017fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000073ffffffffffffffffffffffffffffffffffffffff9516177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055610485575b501690817fffffffffffffffffffffffff00000000000000000000000000000000000000008454161783556040519173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f47e55c76e7a6f1fd8996a1da8008c1ea29699cca35e7bcd057f2dec313b6e5de8580a36103f3575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2917fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005560018152a180f35b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00555f610361565b6004847ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b9050155f6102f7565b303b1591506102ef565b8491506102e5565b503461016e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e57604051907f70a0823100000000000000000000000000000000000000000000000000000000825230600483015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610261579061022a57602090604051908152f35b503461016e5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e5761060761125e565b50610610611281565b5060443567ffffffffffffffff811161016c576106319036906004016112d2565b505060643567ffffffffffffffff811161016c576106539036906004016112d2565b505060843567ffffffffffffffff811161016c576106759036906004016112a4565b505060206040517fbc197c81000000000000000000000000000000000000000000000000000000008152f35b503461016e5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e57806106da61125e565b60443567ffffffffffffffff81116107375782916106ff6107129236906004016112a4565b92906107096114fc565b5a9336916113ab565b916020835193019160243591f1156107275780f35b61072f6115c1565b602081519101fd5b5050fd5b503461016e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461016e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e57506108296040516107eb604082611303565b600581527f352e302e3000000000000000000000000000000000000000000000000000000060208201526040519182916020835260208301906113e1565b0390f35b503461016e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e5773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b503461016e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036109145760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b807fe07c8dba0000000000000000000000000000000000000000000000000000000060049252fd5b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e5761096f61125e565b9060243567ffffffffffffffff811161016c573660238201121561016c576109a19036906024816004013591016113ab565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803014908115610c42575b50610c1a576109f06115db565b73ffffffffffffffffffffffffffffffffffffffff831690604051937f52d1902d000000000000000000000000000000000000000000000000000000008552602085600481865afa80958596610be2575b50610a7257602484847f4c9c8ce3000000000000000000000000000000000000000000000000000000008252600452fd5b9091847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8103610bb75750813b15610b8c57807fffffffffffffffffffffffff00000000000000000000000000000000000000007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a28151839015610b595780836020610b5595519101845af4610b4f6114cd565b9161180b565b5080f35b50505034610b645780f35b807fb398979f0000000000000000000000000000000000000000000000000000000060049252fd5b7f4c9c8ce3000000000000000000000000000000000000000000000000000000008452600452602483fd5b7faa1d49a4000000000000000000000000000000000000000000000000000000008552600452602484fd5b9095506020813d602011610c12575b81610bfe60209383611303565b81010312610c0e5751945f610a41565b8480fd5b3d9150610bf1565b6004827fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b905073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614155f6109e3565b503461016e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e578060043573ffffffffffffffffffffffffffffffffffffffff8116809103610d8657610cde6115db565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b156107375782916044839260405194859384927f205c2878000000000000000000000000000000000000000000000000000000008452600484015260243560248401525af18015610d7b57610d6a5750f35b81610d7491611303565b61016e5780f35b6040513d84823e3d90fd5b50fd5b505f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102555773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15610255575f602491604051928380927fb760faf900000000000000000000000000000000000000000000000000000000825230600483015234905af18015610e4357610e37575080f35b61001a91505f90611303565b6040513d5f823e3d90fd5b346102555760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102555760043567ffffffffffffffff811161025557610e9d9036906004016112d2565b610ea56114fc565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301905b8281101561001a578060051b8401358281121561025557840180359073ffffffffffffffffffffffffffffffffffffffff82168203610255575f9181610f25610f1a604086950183611424565b91905a9236916113ab565b926020808551950193013591f115610f3f57600101610ecd565b60018303610f4f5761072f6115c1565b610f576115c1565b90610f9a6040519283927f5a15467500000000000000000000000000000000000000000000000000000000845260048401526040602484015260448301906113e1565b0390fd5b346102555760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102555760043567ffffffffffffffff8111610255576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126102555760443573ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036110865761105e60209260243590600401611475565b908061106e575b50604051908152f35b5f80808093335af15061107f6114cd565b5082611065565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152fd5b346102555760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102555761111b61125e565b50611124611281565b5060643567ffffffffffffffff8111610255576111459036906004016112a4565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b346102555760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025557600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361025557817f150b7a020000000000000000000000000000000000000000000000000000000060209314908115611234575b811561120a575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483611203565b7f4e2312e000000000000000000000000000000000000000000000000000000000811491506111fc565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361025557565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361025557565b9181601f840112156102555782359167ffffffffffffffff8311610255576020838186019501011161025557565b9181601f840112156102555782359167ffffffffffffffff8311610255576020808501948460051b01011161025557565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761134457604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff811161134457601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926113b782611371565b916113c56040519384611303565b829481845281830111610255578281602093845f960137010152565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610255570180359067ffffffffffffffff82116102555760200191813603831361025557565b906114be6114b573ffffffffffffffffffffffffffffffffffffffff926114af6114a8855f541696610100810190611424565b36916113ab565b9061166a565b909291926116a4565b16036114c8575f90565b600190565b3d156114f7573d906114de82611371565b916114ec6040519384611303565b82523d5f602084013e565b606090565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016331480156115a1575b1561154357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f6163636f756e743a206e6f74204f776e6572206f7220456e747279506f696e746044820152fd5b5073ffffffffffffffffffffffffffffffffffffffff5f5416331461153c565b3d604051906020818301016040528082525f602083013e90565b73ffffffffffffffffffffffffffffffffffffffff5f541633148015611661575b1561160357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152fd5b503033146115fc565b815191906041830361169a576116939250602082015190606060408401519301515f1a9061177c565b9192909190565b50505f9160029190565b600481101561174f57806116b6575050565b600181036116e6577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b6002810361171a57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6003146117245750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611800579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610e43575f5173ffffffffffffffffffffffffffffffffffffffff8116156117f657905f905f90565b505f906001905f90565b5050505f9160039190565b90611848575080511561182057805190602001fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b8151158061189b575b611859575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b1561185156fea264697066735822122032eb57761488c4a85910bd62f08a663823141c483e01a978dd62bdf243526e8f64736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00", "deployedBytecode": "0x608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c90816301ffc9a71461117157508063150b7a02146110e457806319822f7c14610f9e57806334fcd5be14610e4e5780634a58db1914610d895780634d44560d14610c845780634f1ef2861461093c57806352d1902d1461087e5780638da5cb5b1461082d578063ad3cb1cc146107aa578063b0d691fe1461073b578063b61d27f6146106a1578063bc197c81146105cf578063c399ec881461051d578063c4d66de81461026d578063d087d288146101715763f23a6e610361000f573461016e5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e5761011661125e565b5061011f611281565b5060843567ffffffffffffffff811161016c576101409036906004016112a4565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b505b80fd5b503461016e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e57604051907f35567e1a00000000000000000000000000000000000000000000000000000000825230600483015280602483015260208260448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610261579061022a575b602090604051908152f35b506020813d602011610259575b8161024460209383611303565b81010312610255576020905161021f565b5f80fd5b3d9150610237565b604051903d90823e3d90fd5b503461016e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e576102a561125e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549060ff8260401c16159167ffffffffffffffff811680159081610515575b600114908161050b575b159081610502575b506104da5790818360017fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000073ffffffffffffffffffffffffffffffffffffffff9516177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055610485575b501690817fffffffffffffffffffffffff00000000000000000000000000000000000000008454161783556040519173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167f47e55c76e7a6f1fd8996a1da8008c1ea29699cca35e7bcd057f2dec313b6e5de8580a36103f3575080f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2917fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005560018152a180f35b7fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000001668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00555f610361565b6004847ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b9050155f6102f7565b303b1591506102ef565b8491506102e5565b503461016e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e57604051907f70a0823100000000000000000000000000000000000000000000000000000000825230600483015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610261579061022a57602090604051908152f35b503461016e5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e5761060761125e565b50610610611281565b5060443567ffffffffffffffff811161016c576106319036906004016112d2565b505060643567ffffffffffffffff811161016c576106539036906004016112d2565b505060843567ffffffffffffffff811161016c576106759036906004016112a4565b505060206040517fbc197c81000000000000000000000000000000000000000000000000000000008152f35b503461016e5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e57806106da61125e565b60443567ffffffffffffffff81116107375782916106ff6107129236906004016112a4565b92906107096114fc565b5a9336916113ab565b916020835193019160243591f1156107275780f35b61072f6115c1565b602081519101fd5b5050fd5b503461016e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461016e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e57506108296040516107eb604082611303565b600581527f352e302e3000000000000000000000000000000000000000000000000000000060208201526040519182916020835260208301906113e1565b0390f35b503461016e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e5773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b503461016e57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036109145760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b807fe07c8dba0000000000000000000000000000000000000000000000000000000060049252fd5b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e5761096f61125e565b9060243567ffffffffffffffff811161016c573660238201121561016c576109a19036906024816004013591016113ab565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803014908115610c42575b50610c1a576109f06115db565b73ffffffffffffffffffffffffffffffffffffffff831690604051937f52d1902d000000000000000000000000000000000000000000000000000000008552602085600481865afa80958596610be2575b50610a7257602484847f4c9c8ce3000000000000000000000000000000000000000000000000000000008252600452fd5b9091847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8103610bb75750813b15610b8c57807fffffffffffffffffffffffff00000000000000000000000000000000000000007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a28151839015610b595780836020610b5595519101845af4610b4f6114cd565b9161180b565b5080f35b50505034610b645780f35b807fb398979f0000000000000000000000000000000000000000000000000000000060049252fd5b7f4c9c8ce3000000000000000000000000000000000000000000000000000000008452600452602483fd5b7faa1d49a4000000000000000000000000000000000000000000000000000000008552600452602484fd5b9095506020813d602011610c12575b81610bfe60209383611303565b81010312610c0e5751945f610a41565b8480fd5b3d9150610bf1565b6004827fe07c8dba000000000000000000000000000000000000000000000000000000008152fd5b905073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614155f6109e3565b503461016e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016e578060043573ffffffffffffffffffffffffffffffffffffffff8116809103610d8657610cde6115db565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b156107375782916044839260405194859384927f205c2878000000000000000000000000000000000000000000000000000000008452600484015260243560248401525af18015610d7b57610d6a5750f35b81610d7491611303565b61016e5780f35b6040513d84823e3d90fd5b50fd5b505f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102555773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15610255575f602491604051928380927fb760faf900000000000000000000000000000000000000000000000000000000825230600483015234905af18015610e4357610e37575080f35b61001a91505f90611303565b6040513d5f823e3d90fd5b346102555760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102555760043567ffffffffffffffff811161025557610e9d9036906004016112d2565b610ea56114fc565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301905b8281101561001a578060051b8401358281121561025557840180359073ffffffffffffffffffffffffffffffffffffffff82168203610255575f9181610f25610f1a604086950183611424565b91905a9236916113ab565b926020808551950193013591f115610f3f57600101610ecd565b60018303610f4f5761072f6115c1565b610f576115c1565b90610f9a6040519283927f5a15467500000000000000000000000000000000000000000000000000000000845260048401526040602484015260448301906113e1565b0390fd5b346102555760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102555760043567ffffffffffffffff8111610255576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126102555760443573ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036110865761105e60209260243590600401611475565b908061106e575b50604051908152f35b5f80808093335af15061107f6114cd565b5082611065565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152fd5b346102555760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102555761111b61125e565b50611124611281565b5060643567ffffffffffffffff8111610255576111459036906004016112a4565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b346102555760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025557600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361025557817f150b7a020000000000000000000000000000000000000000000000000000000060209314908115611234575b811561120a575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483611203565b7f4e2312e000000000000000000000000000000000000000000000000000000000811491506111fc565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361025557565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361025557565b9181601f840112156102555782359167ffffffffffffffff8311610255576020838186019501011161025557565b9181601f840112156102555782359167ffffffffffffffff8311610255576020808501948460051b01011161025557565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761134457604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b67ffffffffffffffff811161134457601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926113b782611371565b916113c56040519384611303565b829481845281830111610255578281602093845f960137010152565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610255570180359067ffffffffffffffff82116102555760200191813603831361025557565b906114be6114b573ffffffffffffffffffffffffffffffffffffffff926114af6114a8855f541696610100810190611424565b36916113ab565b9061166a565b909291926116a4565b16036114c8575f90565b600190565b3d156114f7573d906114de82611371565b916114ec6040519384611303565b82523d5f602084013e565b606090565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016331480156115a1575b1561154357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f6163636f756e743a206e6f74204f776e6572206f7220456e747279506f696e746044820152fd5b5073ffffffffffffffffffffffffffffffffffffffff5f5416331461153c565b3d604051906020818301016040528082525f602083013e90565b73ffffffffffffffffffffffffffffffffffffffff5f541633148015611661575b1561160357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152fd5b503033146115fc565b815191906041830361169a576116939250602082015190606060408401519301515f1a9061177c565b9192909190565b50505f9160029190565b600481101561174f57806116b6575050565b600181036116e6577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b6002810361171a57507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6003146117245750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611800579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610e43575f5173ffffffffffffffffffffffffffffffffffffffff8116156117f657905f905f90565b505f906001905f90565b5050505f9160039190565b90611848575080511561182057805190602001fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b8151158061189b575b611859575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b1561185156fea264697066735822122032eb57761488c4a85910bd62f08a663823141c483e01a978dd62bdf243526e8f64736f6c634300081c0033", "linkReferences": {}, "deployedLinkReferences": {} }