UNPKG

@airdao/astra-universal-router

Version:

Smart contracts for Universal Router

440 lines (439 loc) 32.8 kB
{ "_format": "hh-sol-artifact-1", "contractName": "SignatureTransfer", "sourceName": "permit2/src/SignatureTransfer.sol", "abi": [ { "inputs": [ { "internalType": "uint256", "name": "maxAmount", "type": "uint256" } ], "name": "InvalidAmount", "type": "error" }, { "inputs": [], "name": "InvalidContractSignature", "type": "error" }, { "inputs": [], "name": "InvalidNonce", "type": "error" }, { "inputs": [], "name": "InvalidSignature", "type": "error" }, { "inputs": [], "name": "InvalidSignatureLength", "type": "error" }, { "inputs": [], "name": "InvalidSigner", "type": "error" }, { "inputs": [], "name": "LengthMismatch", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "signatureDeadline", "type": "uint256" } ], "name": "SignatureExpired", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "word", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "mask", "type": "uint256" } ], "name": "UnorderedNonceInvalidation", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "wordPos", "type": "uint256" }, { "internalType": "uint256", "name": "mask", "type": "uint256" } ], "name": "invalidateUnorderedNonces", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "nonceBitmap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "components": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "internalType": "struct ISignatureTransfer.TokenPermissions", "name": "permitted", "type": "tuple" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "internalType": "struct ISignatureTransfer.PermitTransferFrom", "name": "permit", "type": "tuple" }, { "components": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "requestedAmount", "type": "uint256" } ], "internalType": "struct ISignatureTransfer.SignatureTransferDetails", "name": "transferDetails", "type": "tuple" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "permitTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "components": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "internalType": "struct ISignatureTransfer.TokenPermissions[]", "name": "permitted", "type": "tuple[]" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "internalType": "struct ISignatureTransfer.PermitBatchTransferFrom", "name": "permit", "type": "tuple" }, { "components": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "requestedAmount", "type": "uint256" } ], "internalType": "struct ISignatureTransfer.SignatureTransferDetails[]", "name": "transferDetails", "type": "tuple[]" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "permitTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "components": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "internalType": "struct ISignatureTransfer.TokenPermissions", "name": "permitted", "type": "tuple" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "internalType": "struct ISignatureTransfer.PermitTransferFrom", "name": "permit", "type": "tuple" }, { "components": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "requestedAmount", "type": "uint256" } ], "internalType": "struct ISignatureTransfer.SignatureTransferDetails", "name": "transferDetails", "type": "tuple" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, { "internalType": "string", "name": "witnessTypeString", "type": "string" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "permitWitnessTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "components": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "internalType": "struct ISignatureTransfer.TokenPermissions[]", "name": "permitted", "type": "tuple[]" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "internalType": "struct ISignatureTransfer.PermitBatchTransferFrom", "name": "permit", "type": "tuple" }, { "components": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "requestedAmount", "type": "uint256" } ], "internalType": "struct ISignatureTransfer.SignatureTransferDetails[]", "name": "transferDetails", "type": "tuple[]" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "bytes32", "name": "witness", "type": "bytes32" }, { "internalType": "string", "name": "witnessTypeString", "type": "string" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "permitWitnessTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x60c0346100bb574660a052602081017f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a60408301524660608301523060808301526080825260a082019180831060018060401b038411176100a5578260405251902060805261152690816100c1823960805181610bfe015260a05181610bd80152f35b634e487b7160e01b600052604160045260246000fd5b600080fdfe6040608081526004908136101561001557600080fd5b600090813560e01c8063137c29fe1461067c57806330f28b7a1461057c5780633644e5151461053b5780633ff9dcb1146104bb5780634fe02b441461044b578063edd9444b146102e25763fe8ec1a71461006e57600080fd5b346102de5760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102de5767ffffffffffffffff83358181116102da576100bc9036908601610a7b565b6024358281116102d6576100d39036908701610ba4565b6100db61097b565b916084358581116102d2576100f39036908a01610a35565b98909560a4359081116102ce5761010c91369101610a35565b96909581519061011b826108be565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b91816101ca6020850180966110a8565b918237018a815203996102037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282610912565b5190209085515161021381610fd0565b908a5b8181106102a157505061029e999a6102959183516102488161023c60208201809561107b565b03848101835282610912565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282610912565b51902093610e09565b80f35b806102b96102b36102c9938c51610db6565b516110d3565b6102c38286610db6565b5261101f565b610216565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346102de5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102de5767ffffffffffffffff9080358281116102da576103339036908301610a7b565b6024358381116102d65761034a9036908401610ba4565b93909261035561097b565b916064359081116104475761036c91369101610a35565b9490938351519761037c89610fd0565b98885b81811061042557505061029e979881516103cd816103a160208201809561107b565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610912565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a08152610295816108f6565b808b6102c38261043c6102b3610442968d51610db6565b92610db6565b61037f565b8680fd5b5082346104b757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104b7573573ffffffffffffffffffffffffffffffffffffffff81168091036104b757828291602094528084528181206024358252845220549051908152f35b8280fd5b5082346104b757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104b7577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b50346102de57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102de57602090610575610bd5565b9051908152f35b508290346104b7576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104b7576105b83661099e565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c3601126102da576105ea610953565b9160e43567ffffffffffffffff81116106785761029e9461060d91369101610a35565b93909261061a83516110d3565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a0815261066f816108f6565b51902091610c90565b8580fd5b5082346104b7576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104b7576106b73661099e565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c3601126102da576106e9610953565b67ffffffffffffffff9390610104358581116104475761070c9036908601610a35565b9093610124359687116102d25761072c61066f9661029e98369101610a35565b96909582519061073b826108be565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816107ea6020850180966110a8565b918237018b815203936108237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282610912565b5190209261083186516110d3565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e08101610289565b6060810190811067ffffffffffffffff82111761088f57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810190811067ffffffffffffffff82111761088f57604052565b6080810190811067ffffffffffffffff82111761088f57604052565b60c0810190811067ffffffffffffffff82111761088f57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761088f57604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361097657565b600080fd5b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361097657565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0190608082126109765760408051906109d782610873565b8082941261097657805181810181811067ffffffffffffffff82111761088f57825260043573ffffffffffffffffffffffffffffffffffffffff81168103610976578152602435602082015282526044356020830152606435910152565b9181601f840112156109765782359167ffffffffffffffff8311610976576020838186019501011161097657565b67ffffffffffffffff811161088f5760051b60200190565b919091606081840312610976576040805191610a9683610873565b8294813567ffffffffffffffff9081811161097657830182601f82011215610976578035610ac381610a63565b92610ad087519485610912565b818452602094858086019360061b85010193818511610976579086899897969594939201925b848410610b13575050505050855280820135908501520135910152565b9091929394959697848303126109765788519089820182811085821117610b76578a5284359073ffffffffffffffffffffffffffffffffffffffff82168203610976578289928c9452828701358382015281520193019190889796959493610af6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b9181601f840112156109765782359167ffffffffffffffff8311610976576020808501948460061b01011161097657565b467f000000000000000000000000000000000000000000000000000000000000000003610c20577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152610c8a816108be565b51902090565b9192909360a435936040840151804211610d395750602084510151808611610d085750918591610cd0610cd694610ccb602088015186610f5c565b610d6a565b91611146565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361097657610d0693611435565b565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b610d72610bd5565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152610c8a816108da565b8051821015610dca5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9190811015610dca5760061b0190565b90919593958151519560409586840151804211610f2c5750828803610f0357610e41918691610cd060209b610ccb8d89015186610f5c565b600091825b878110610e5857505050505050505050565b610e63818351610db6565b5189610e70838689610df9565b0135908a810151808311610ed3575081610e8f575b5050600101610e46565b73ffffffffffffffffffffffffffffffffffffffff80915116610eb384878a610df9565b3591821682036104475791610ecc918960019594611435565b9038610e85565b6024908a51907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600487517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908851907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615610fa657565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90610fda82610a63565b610fe76040519182610912565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06110158294610a63565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461104c5760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611094575050505090565b835185529381019392810192600101611086565b9081519160005b8381106110c0575050016000815290565b80602080928401015181850152016110af565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152610c8a816108da565b9190826040910312610976576020823592013590565b6000843b6112ad57506041820361122b5761116382820182611130565b93909260401015610dca5760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa1561121f5773ffffffffffffffffffffffffffffffffffffffff80600051169182156111f55716036111cb57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b604082036112835761123f91810190611130565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff821161104c5760209360009360ff608094611181565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa90811561142a5782916113a9575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361137f57565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d8211611422575b816113c360209383610912565b810103126102de5751907fffffffff000000000000000000000000000000000000000000000000000000008216820361141f57507fffffffff000000000000000000000000000000000000000000000000000000009038611353565b80fd5b3d91506113b6565b6040513d84823e3d90fd5b92602092606491600093604051927f23b872dd00000000000000000000000000000000000000000000000000000000845273ffffffffffffffffffffffffffffffffffffffff8092166004850152166024830152604482015282855af19081601f3d1160016000511416151661150c575b50156114ae57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b3b153d17159050386114a656fea164736f6c6343000811000a", "deployedBytecode": "0x6040608081526004908136101561001557600080fd5b600090813560e01c8063137c29fe1461067c57806330f28b7a1461057c5780633644e5151461053b5780633ff9dcb1146104bb5780634fe02b441461044b578063edd9444b146102e25763fe8ec1a71461006e57600080fd5b346102de5760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102de5767ffffffffffffffff83358181116102da576100bc9036908601610a7b565b6024358281116102d6576100d39036908701610ba4565b6100db61097b565b916084358581116102d2576100f39036908a01610a35565b98909560a4359081116102ce5761010c91369101610a35565b96909581519061011b826108be565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b91816101ca6020850180966110a8565b918237018a815203996102037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282610912565b5190209085515161021381610fd0565b908a5b8181106102a157505061029e999a6102959183516102488161023c60208201809561107b565b03848101835282610912565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282610912565b51902093610e09565b80f35b806102b96102b36102c9938c51610db6565b516110d3565b6102c38286610db6565b5261101f565b610216565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346102de5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102de5767ffffffffffffffff9080358281116102da576103339036908301610a7b565b6024358381116102d65761034a9036908401610ba4565b93909261035561097b565b916064359081116104475761036c91369101610a35565b9490938351519761037c89610fd0565b98885b81811061042557505061029e979881516103cd816103a160208201809561107b565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610912565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a08152610295816108f6565b808b6102c38261043c6102b3610442968d51610db6565b92610db6565b61037f565b8680fd5b5082346104b757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104b7573573ffffffffffffffffffffffffffffffffffffffff81168091036104b757828291602094528084528181206024358252845220549051908152f35b8280fd5b5082346104b757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104b7577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b50346102de57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102de57602090610575610bd5565b9051908152f35b508290346104b7576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104b7576105b83661099e565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c3601126102da576105ea610953565b9160e43567ffffffffffffffff81116106785761029e9461060d91369101610a35565b93909261061a83516110d3565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a0815261066f816108f6565b51902091610c90565b8580fd5b5082346104b7576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104b7576106b73661099e565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c3601126102da576106e9610953565b67ffffffffffffffff9390610104358581116104475761070c9036908601610a35565b9093610124359687116102d25761072c61066f9661029e98369101610a35565b96909582519061073b826108be565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816107ea6020850180966110a8565b918237018b815203936108237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282610912565b5190209261083186516110d3565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e08101610289565b6060810190811067ffffffffffffffff82111761088f57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60a0810190811067ffffffffffffffff82111761088f57604052565b6080810190811067ffffffffffffffff82111761088f57604052565b60c0810190811067ffffffffffffffff82111761088f57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761088f57604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361097657565b600080fd5b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361097657565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0190608082126109765760408051906109d782610873565b8082941261097657805181810181811067ffffffffffffffff82111761088f57825260043573ffffffffffffffffffffffffffffffffffffffff81168103610976578152602435602082015282526044356020830152606435910152565b9181601f840112156109765782359167ffffffffffffffff8311610976576020838186019501011161097657565b67ffffffffffffffff811161088f5760051b60200190565b919091606081840312610976576040805191610a9683610873565b8294813567ffffffffffffffff9081811161097657830182601f82011215610976578035610ac381610a63565b92610ad087519485610912565b818452602094858086019360061b85010193818511610976579086899897969594939201925b848410610b13575050505050855280820135908501520135910152565b9091929394959697848303126109765788519089820182811085821117610b76578a5284359073ffffffffffffffffffffffffffffffffffffffff82168203610976578289928c9452828701358382015281520193019190889796959493610af6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b9181601f840112156109765782359167ffffffffffffffff8311610976576020808501948460061b01011161097657565b467f000000000000000000000000000000000000000000000000000000000000000003610c20577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152610c8a816108be565b51902090565b9192909360a435936040840151804211610d395750602084510151808611610d085750918591610cd0610cd694610ccb602088015186610f5c565b610d6a565b91611146565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361097657610d0693611435565b565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b610d72610bd5565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152610c8a816108da565b8051821015610dca5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9190811015610dca5760061b0190565b90919593958151519560409586840151804211610f2c5750828803610f0357610e41918691610cd060209b610ccb8d89015186610f5c565b600091825b878110610e5857505050505050505050565b610e63818351610db6565b5189610e70838689610df9565b0135908a810151808311610ed3575081610e8f575b5050600101610e46565b73ffffffffffffffffffffffffffffffffffffffff80915116610eb384878a610df9565b3591821682036104475791610ecc918960019594611435565b9038610e85565b6024908a51907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600487517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908851907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615610fa657565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90610fda82610a63565b610fe76040519182610912565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06110158294610a63565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461104c5760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611094575050505090565b835185529381019392810192600101611086565b9081519160005b8381106110c0575050016000815290565b80602080928401015181850152016110af565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152610c8a816108da565b9190826040910312610976576020823592013590565b6000843b6112ad57506041820361122b5761116382820182611130565b93909260401015610dca5760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa1561121f5773ffffffffffffffffffffffffffffffffffffffff80600051169182156111f55716036111cb57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b604082036112835761123f91810190611130565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff821161104c5760209360009360ff608094611181565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa90811561142a5782916113a9575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361137f57565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d8211611422575b816113c360209383610912565b810103126102de5751907fffffffff000000000000000000000000000000000000000000000000000000008216820361141f57507fffffffff000000000000000000000000000000000000000000000000000000009038611353565b80fd5b3d91506113b6565b6040513d84823e3d90fd5b92602092606491600093604051927f23b872dd00000000000000000000000000000000000000000000000000000000845273ffffffffffffffffffffffffffffffffffffffff8092166004850152166024830152604482015282855af19081601f3d1160016000511416151661150c575b50156114ae57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b3b153d17159050386114a656fea164736f6c6343000811000a", "linkReferences": {}, "deployedLinkReferences": {} }