@boostxyz/cli 6.2.1 → 7.0.0-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("@boostxyz/sdk"),t=require("../utils-dz3mUqTs.cjs"),gf="hh-sol-artifact-1",Mf="ContractAction",If="contracts/actions/ContractAction.sol",xf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"uint256",name:"targetChainId",type:"uint256"}],name:"TargetChainUnsupported",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"bytes_",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"target",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"value",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],Af="0x60a0604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6080516108c46100945f395f61017601526108c45ff3fe6080604052600436106100ad575f3560e01c8063439fab9111610066578063d4b839921161004c578063d4b8399214610215578063d7768c4714610241578063ea3d508a1461026d575f80fd5b8063439fab91146101e05780639a8a059214610201575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb146101655780633fa4f245146101bd575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb3660046106c1565b61029e565b60405190151581526020015b60405180910390f35b6100f86100f33660046106da565b6102f9565b6040516100dc929190610794565b348015610111575f80fd5b507f6c3129aa000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100dc565b348015610170575f80fd5b506101987f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101c8575f80fd5b506101d260025481565b6040519081526020016100dc565b3480156101eb575f80fd5b506101ff6101fa3660046106da565b6103e6565b005b34801561020c575f80fd5b506101d25f5481565b348015610220575f80fd5b506001546101989073ffffffffffffffffffffffffffffffffffffffff1681565b34801561024c575f80fd5b5061026061025b3660046106da565b610486565b6040516100dc91906107b6565b348015610278575f80fd5b506001546101349074010000000000000000000000000000000000000000900460e01b81565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa0000000000000000000000000000000000000000000000000000000014806102f357506102f3826104b9565b92915050565b5f6060465f5414610344575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161033b91815260200190565b60405180910390fd5b6001546002545f91829173ffffffffffffffffffffffffffffffffffffffff82169161038c9074010000000000000000000000000000000000000000900460e01b898961050e565b60405161039991906107c8565b5f6040518083038185875af1925050503d805f81146103d3576040519150601f19603f3d011682016040523d82523d5f602084013e6103d8565b606091505b509097909650945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156104375760018160011c14303b1061042e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061044c610447838501856107de565b61053a565b8015610481576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001546060906104b29074010000000000000000000000000000000000000000900460e01b848461050e565b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102f357506102f3826105bd565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b610542610653565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102f357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460011661068a5763d7e6bcf85f526004601cfd5b50565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146106bc575f80fd5b919050565b5f602082840312156106d1575f80fd5b6104b28261068d565b5f80602083850312156106eb575f80fd5b823567ffffffffffffffff811115610701575f80fd5b8301601f81018513610711575f80fd5b803567ffffffffffffffff811115610727575f80fd5b856020828401011115610738575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f6107ae6040830184610748565b949350505050565b602081525f6104b26020830184610748565b5f82518060208501845e5f920191825250919050565b5f60808284031280156107ef575f80fd5b506040516080810167ffffffffffffffff81118282101715610838577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282358152602083013573ffffffffffffffffffffffffffffffffffffffff81168114610865575f80fd5b60208201526108766040840161068d565b6040820152606092830135928101929092525091905056fea2646970667358221220905c8d13b8cf2ec88a149d85f6dcfd392e4a754801dec8534ad083faaf42dabd64736f6c634300081a0033",Ef="0x6080604052600436106100ad575f3560e01c8063439fab9111610066578063d4b839921161004c578063d4b8399214610215578063d7768c4714610241578063ea3d508a1461026d575f80fd5b8063439fab91146101e05780639a8a059214610201575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb146101655780633fa4f245146101bd575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb3660046106c1565b61029e565b60405190151581526020015b60405180910390f35b6100f86100f33660046106da565b6102f9565b6040516100dc929190610794565b348015610111575f80fd5b507f6c3129aa000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100dc565b348015610170575f80fd5b506101987f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101c8575f80fd5b506101d260025481565b6040519081526020016100dc565b3480156101eb575f80fd5b506101ff6101fa3660046106da565b6103e6565b005b34801561020c575f80fd5b506101d25f5481565b348015610220575f80fd5b506001546101989073ffffffffffffffffffffffffffffffffffffffff1681565b34801561024c575f80fd5b5061026061025b3660046106da565b610486565b6040516100dc91906107b6565b348015610278575f80fd5b506001546101349074010000000000000000000000000000000000000000900460e01b81565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa0000000000000000000000000000000000000000000000000000000014806102f357506102f3826104b9565b92915050565b5f6060465f5414610344575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161033b91815260200190565b60405180910390fd5b6001546002545f91829173ffffffffffffffffffffffffffffffffffffffff82169161038c9074010000000000000000000000000000000000000000900460e01b898961050e565b60405161039991906107c8565b5f6040518083038185875af1925050503d805f81146103d3576040519150601f19603f3d011682016040523d82523d5f602084013e6103d8565b606091505b509097909650945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156104375760018160011c14303b1061042e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061044c610447838501856107de565b61053a565b8015610481576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001546060906104b29074010000000000000000000000000000000000000000900460e01b848461050e565b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102f357506102f3826105bd565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b610542610653565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102f357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460011661068a5763d7e6bcf85f526004601cfd5b50565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146106bc575f80fd5b919050565b5f602082840312156106d1575f80fd5b6104b28261068d565b5f80602083850312156106eb575f80fd5b823567ffffffffffffffff811115610701575f80fd5b8301601f81018513610711575f80fd5b803567ffffffffffffffff811115610727575f80fd5b856020828401011115610738575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f6107ae6040830184610748565b949350505050565b602081525f6104b26020830184610748565b5f82518060208501845e5f920191825250919050565b5f60808284031280156107ef575f80fd5b506040516080810167ffffffffffffffff81118282101715610838577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282358152602083013573ffffffffffffffffffffffffffffffffffffffff81168114610865575f80fd5b60208201526108766040840161068d565b6040820152606092830135928101929092525091905056fea2646970667358221220905c8d13b8cf2ec88a149d85f6dcfd392e4a754801dec8534ad083faaf42dabd64736f6c634300081a0033",Rf={},Of={},O0={_format:gf,contractName:Mf,sourceName:If,abi:xf,bytecode:Af,deployedBytecode:Ef,linkReferences:Rf,deployedLinkReferences:Of},Cf="hh-sol-artifact-1",_f="ERC721MintAction",zf="contracts/actions/ERC721MintAction.sol",Bf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"uint256",name:"targetChainId",type:"uint256"}],name:"TargetChainUnsupported",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"target",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"success",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"validated",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"value",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],Nf="0x60a0604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b608051610f896100945f395f6102100152610f895ff3fe60806040526004361061013d575f3560e01c8063715018a6116100bb578063d7768c4711610071578063f04e283e11610057578063f04e283e146103ba578063f2fde38b146103cd578063fee81cf4146103e0575f80fd5b8063d7768c471461035d578063ea3d508a14610389575f80fd5b80639a8a0592116100a15780639a8a0592146102ef578063bec9527714610303578063d4b8399214610331575f80fd5b8063715018a6146102b45780638da5cb5b146102bc575f80fd5b8063393df8cb11610110578063439fab91116100f6578063439fab911461027a57806354d1f13d14610299578063703b6900146102a1575f80fd5b8063393df8cb146101ff5780633fa4f24514610257575f80fd5b806301ffc9a71461014157806309c5eabe14610175578063256929621461019657806328d6183b146101a0575b5f80fd5b34801561014c575f80fd5b5061016061015b366004610b6a565b610411565b60405190151581526020015b60405180910390f35b610188610183366004610bc8565b61046c565b60405161016c929190610c53565b61019e6104a1565b005b3480156101ab575f80fd5b507f97e083eb000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161016c565b34801561020a575f80fd5b506102327f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610262575f80fd5b5061026c60025481565b60405190815260200161016c565b348015610285575f80fd5b5061019e610294366004610bc8565b6104ee565b61019e61058e565b6101606102af366004610c96565b6105c7565b61019e610705565b3480156102c7575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610232565b3480156102fa575f80fd5b5061026c5f5481565b34801561030e575f80fd5b5061016061031d366004610cfb565b60036020525f908152604090205460ff1681565b34801561033c575f80fd5b506001546102329073ffffffffffffffffffffffffffffffffffffffff1681565b348015610368575f80fd5b5061037c610377366004610bc8565b610718565b60405161016c9190610d12565b348015610394575f80fd5b506001546101ce9074010000000000000000000000000000000000000000900460e01b81565b61019e6103c8366004610d24565b61072b565b61019e6103db366004610d24565b610768565b3480156103eb575f80fd5b5061026c6103fa366004610d24565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f97e083eb00000000000000000000000000000000000000000000000000000000148061046657506104668261078e565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561053f5760018160011c14303b106105365763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061055461054f83850185610dbb565b6107e3565b8015610589576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80806105d684860186610e2e565b915091505f816105e590610ef3565b6001546040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810183905291925073ffffffffffffffffffffffffffffffffffffffff85811692911690636352211e90602401602060405180830381865afa158015610658573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067c9190610f38565b73ffffffffffffffffffffffffffffffffffffffff161480156106ad57505f8181526003602052604090205460ff16155b156106f5575f90815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915592506106fc915050565b5f93505050505b95945050505050565b61070d61086f565b6107165f6108a4565b565b60606107248383610909565b9392505050565b61073361086f565b63389a75e1600c52805f526020600c20805442111561075957636f5e88185f526004601cfd5b5f9055610765816108a4565b50565b61077061086f565b8060601b61078557637448fbae5f526004601cfd5b610765816108a4565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c000000000000000000000000000000000000000000000000000000001480610466575061046682610935565b6107eb61098a565b6107f4336109c1565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610716576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b6001546060906107249074010000000000000000000000000000000000000000900460e01b8484610a24565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa000000000000000000000000000000000000000000000000000000001480610466575061046682610a50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546001166107655763d7e6bcf85f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806104665750610466825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061046657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610466565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610b65575f80fd5b919050565b5f60208284031215610b7a575f80fd5b61072482610b36565b5f8083601f840112610b93575f80fd5b50813567ffffffffffffffff811115610baa575f80fd5b602083019150836020828501011115610bc1575f80fd5b9250929050565b5f8060208385031215610bd9575f80fd5b823567ffffffffffffffff811115610bef575f80fd5b610bfb85828601610b83565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f610c6d6040830184610c07565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610765575f80fd5b5f805f805f60808688031215610caa575f80fd5b85359450602086013593506040860135610cc381610c75565b9250606086013567ffffffffffffffff811115610cde575f80fd5b610cea88828901610b83565b969995985093965092949392505050565b5f60208284031215610d0b575f80fd5b5035919050565b602081525f6107246020830184610c07565b5f60208284031215610d34575f80fd5b813561072481610c75565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610db357610db3610d3f565b604052919050565b5f6080828403128015610dcc575f80fd5b506040516080810167ffffffffffffffff81118282101715610df057610df0610d3f565b604052823581526020830135610e0581610c75565b6020820152610e1660408401610b36565b60408201526060928301359281019290925250919050565b5f8060408385031215610e3f575f80fd5b8235610e4a81610c75565b9150602083013567ffffffffffffffff811115610e65575f80fd5b8301601f81018513610e75575f80fd5b803567ffffffffffffffff811115610e8f57610e8f610d3f565b610ec060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610d6c565b818152866020838501011115610ed4575f80fd5b816020840160208301375f602083830101528093505050509250929050565b80516020808301519190811015610f32577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b5f60208284031215610f48575f80fd5b815161072481610c7556fea2646970667358221220bd769b1a70e94fd94a8faec62bce146b49ddcf8c6d4b4f63592e703afb84373664736f6c634300081a0033",Pf="0x60806040526004361061013d575f3560e01c8063715018a6116100bb578063d7768c4711610071578063f04e283e11610057578063f04e283e146103ba578063f2fde38b146103cd578063fee81cf4146103e0575f80fd5b8063d7768c471461035d578063ea3d508a14610389575f80fd5b80639a8a0592116100a15780639a8a0592146102ef578063bec9527714610303578063d4b8399214610331575f80fd5b8063715018a6146102b45780638da5cb5b146102bc575f80fd5b8063393df8cb11610110578063439fab91116100f6578063439fab911461027a57806354d1f13d14610299578063703b6900146102a1575f80fd5b8063393df8cb146101ff5780633fa4f24514610257575f80fd5b806301ffc9a71461014157806309c5eabe14610175578063256929621461019657806328d6183b146101a0575b5f80fd5b34801561014c575f80fd5b5061016061015b366004610b6a565b610411565b60405190151581526020015b60405180910390f35b610188610183366004610bc8565b61046c565b60405161016c929190610c53565b61019e6104a1565b005b3480156101ab575f80fd5b507f97e083eb000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161016c565b34801561020a575f80fd5b506102327f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610262575f80fd5b5061026c60025481565b60405190815260200161016c565b348015610285575f80fd5b5061019e610294366004610bc8565b6104ee565b61019e61058e565b6101606102af366004610c96565b6105c7565b61019e610705565b3480156102c7575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610232565b3480156102fa575f80fd5b5061026c5f5481565b34801561030e575f80fd5b5061016061031d366004610cfb565b60036020525f908152604090205460ff1681565b34801561033c575f80fd5b506001546102329073ffffffffffffffffffffffffffffffffffffffff1681565b348015610368575f80fd5b5061037c610377366004610bc8565b610718565b60405161016c9190610d12565b348015610394575f80fd5b506001546101ce9074010000000000000000000000000000000000000000900460e01b81565b61019e6103c8366004610d24565b61072b565b61019e6103db366004610d24565b610768565b3480156103eb575f80fd5b5061026c6103fa366004610d24565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f97e083eb00000000000000000000000000000000000000000000000000000000148061046657506104668261078e565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561053f5760018160011c14303b106105365763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061055461054f83850185610dbb565b6107e3565b8015610589576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80806105d684860186610e2e565b915091505f816105e590610ef3565b6001546040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810183905291925073ffffffffffffffffffffffffffffffffffffffff85811692911690636352211e90602401602060405180830381865afa158015610658573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067c9190610f38565b73ffffffffffffffffffffffffffffffffffffffff161480156106ad57505f8181526003602052604090205460ff16155b156106f5575f90815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915592506106fc915050565b5f93505050505b95945050505050565b61070d61086f565b6107165f6108a4565b565b60606107248383610909565b9392505050565b61073361086f565b63389a75e1600c52805f526020600c20805442111561075957636f5e88185f526004601cfd5b5f9055610765816108a4565b50565b61077061086f565b8060601b61078557637448fbae5f526004601cfd5b610765816108a4565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c000000000000000000000000000000000000000000000000000000001480610466575061046682610935565b6107eb61098a565b6107f4336109c1565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610716576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b6001546060906107249074010000000000000000000000000000000000000000900460e01b8484610a24565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa000000000000000000000000000000000000000000000000000000001480610466575061046682610a50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546001166107655763d7e6bcf85f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806104665750610466825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061046657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610466565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610b65575f80fd5b919050565b5f60208284031215610b7a575f80fd5b61072482610b36565b5f8083601f840112610b93575f80fd5b50813567ffffffffffffffff811115610baa575f80fd5b602083019150836020828501011115610bc1575f80fd5b9250929050565b5f8060208385031215610bd9575f80fd5b823567ffffffffffffffff811115610bef575f80fd5b610bfb85828601610b83565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f610c6d6040830184610c07565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610765575f80fd5b5f805f805f60808688031215610caa575f80fd5b85359450602086013593506040860135610cc381610c75565b9250606086013567ffffffffffffffff811115610cde575f80fd5b610cea88828901610b83565b969995985093965092949392505050565b5f60208284031215610d0b575f80fd5b5035919050565b602081525f6107246020830184610c07565b5f60208284031215610d34575f80fd5b813561072481610c75565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610db357610db3610d3f565b604052919050565b5f6080828403128015610dcc575f80fd5b506040516080810167ffffffffffffffff81118282101715610df057610df0610d3f565b604052823581526020830135610e0581610c75565b6020820152610e1660408401610b36565b60408201526060928301359281019290925250919050565b5f8060408385031215610e3f575f80fd5b8235610e4a81610c75565b9150602083013567ffffffffffffffff811115610e65575f80fd5b8301601f81018513610e75575f80fd5b803567ffffffffffffffff811115610e8f57610e8f610d3f565b610ec060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610d6c565b818152866020838501011115610ed4575f80fd5b816020840160208301375f602083830101528093505050509250929050565b80516020808301519190811015610f32577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b5f60208284031215610f48575f80fd5b815161072481610c7556fea2646970667358221220bd769b1a70e94fd94a8faec62bce146b49ddcf8c6d4b4f63592e703afb84373664736f6c634300081a0033",$f={},Lf={},C0={_format:Cf,contractName:_f,sourceName:zf,abi:Bf,bytecode:Nf,deployedBytecode:Pf,linkReferences:$f,deployedLinkReferences:Lf},Hf="hh-sol-artifact-1",Ff="EventAction",kf="contracts/actions/EventAction.sol",Sf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{components:[{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"}],indexed:!1,internalType:"struct AEventAction.ActionClaimant",name:"actionClaimant",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepOne",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepTwo",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepThree",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepFour",type:"tuple"}],name:"EventActionInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getActionClaimant",outputs:[{components:[{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"}],internalType:"struct AEventAction.ActionClaimant",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"getActionStep",outputs:[{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],internalType:"struct AEventAction.ActionStep",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getActionSteps",outputs:[{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],internalType:"struct AEventAction.ActionStep[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getActionStepsCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"}],Df="0x60a0604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b608051611c276100945f395f6101510152611c275ff3fe6080604052600436106100ad575f3560e01c80639bc1cf8111610066578063d7768c471161004c578063d7768c4714610206578063dbdf211014610232578063ddd6ab0814610253575f80fd5b80639bc1cf81146101b9578063c26624e8146101da575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb14610140578063439fab9114610198575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb366004611281565b610270565b60405190151581526020015b60405180910390f35b6100f86100f33660046112c7565b6102cb565b6040516100dc929190611381565b348015610111575f80fd5b506040517f7687b0ed0000000000000000000000000000000000000000000000000000000081526020016100dc565b34801561014b575f80fd5b506101737f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101a3575f80fd5b506101b76101b23660046112c7565b610300565b005b3480156101c4575f80fd5b506101cd6103a0565b6040516100dc919061149b565b3480156101e5575f80fd5b506101f96101f436600461151c565b61059f565b6040516100dc9190611533565b348015610211575f80fd5b506102256102203660046112c7565b61077a565b6040516100dc9190611545565b34801561023d575f80fd5b506102466107ae565b6040516100dc91906115a7565b34801561025e575f80fd5b506004546040519081526020016100dc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7687b0ed0000000000000000000000000000000000000000000000000000000014806102c557506102c582610858565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156103515760018160011c14303b106103485763f92ee8a95f526004601cfd5b818160ff1b1b91505b50610366610361838501856118a8565b6108ad565b801561039b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b82821015610596578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff166001811115610410576104106113a3565b6001811115610421576104216113a3565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610494576104946113a3565b60078111156104a5576104a56113a3565b81528154602090910190610100900460ff1660058111156104c8576104c86113a3565b60058111156104d9576104d96113a3565b8152815462010000900463ffffffff166020820152600182018054604090920191610503906119a9565b80601f016020809104026020016040519081016040528092919081815260200182805461052f906119a9565b801561057a5780601f106105515761010080835404028352916020019161057a565b820191905f5260205f20905b81548152906001019060200180831161055d57829003601f168201915b50505050508152505081525050815260200190600101906103c3565b50505050905090565b6105a7611226565b600482815481106105ba576105ba6119fa565b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156105fd576105fd6113a3565b600181111561060e5761060e6113a3565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610681576106816113a3565b6007811115610692576106926113a3565b81528154602090910190610100900460ff1660058111156106b5576106b56113a3565b60058111156106c6576106c66113a3565b8152815462010000900463ffffffff1660208201526001820180546040909201916106f0906119a9565b80601f016020809104026020016040519081016040528092919081815260200182805461071c906119a9565b80156107675780601f1061073e57610100808354040283529160200191610767565b820191905f5260205f20905b81548152906001019060200180831161074a57829003601f168201915b5050509190925250505090525092915050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040805160a081019091525f8054829060ff1660018111156107fc576107fc6113a3565b600181111561080d5761080d6113a3565b815260018201546020820152600282015460ff81166040830152610100900473ffffffffffffffffffffffffffffffffffffffff166060820152600390910154608090910152919050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102c557506102c582611156565b6108b56111ec565b805180515f8054909190829060ff1916600183818111156108d8576108d86113a3565b02179055506020828101516001808401919091556040840151600284018054606087015173ffffffffffffffffffffffffffffffffffffffff16610100027fffffffffffffffffffffff00000000000000000000000000000000000000000090911660ff90931692909217919091179055608090930151600390920191909155828101516004805480850182555f91909152815160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b8101918255928201517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c90930180549294919392909160ff19919091169083818111156109e1576109e16113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610aa257610aa26113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610ae757610ae76113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610b3b9082611a72565b505050604083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610bcc57610bcc6113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610c8d57610c8d6113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610cd257610cd26113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610d269082611a72565b505050606083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610db757610db76113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610e7857610e786113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610ebd57610ebd6113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610f119082611a72565b505050608083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610fa257610fa26113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115611063576110636113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008360058111156110a8576110a86113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff909116178155606082015160018201906110fc9082611a72565b50505050507fdc8145a6c863ebd27b18aa903b7f82f1015527a05a81f227ef06ab79616082b4815f0151826020015183604001518460600151856080015160405161114b959493929190611b89565b60405180910390a150565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102c557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102c5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546001166112235763d7e6bcf85f526004601cfd5b50565b6040805160c081019091525f808252602082019081525f6020820181905260408201819052606082015260800161127c6040805160808101909152805f81526020015f81525f6020820152606060409091015290565b905290565b5f60208284031215611291575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112c0575f80fd5b9392505050565b5f80602083850312156112d8575f80fd5b823567ffffffffffffffff8111156112ee575f80fd5b8301601f810185136112fe575f80fd5b803567ffffffffffffffff811115611314575f80fd5b856020828401011115611325575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f61139b6040830184611335565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106113e0576113e06113a3565b9052565b805182525f60208201516113fb60208501826113d0565b5060ff604083015116604084015273ffffffffffffffffffffffffffffffffffffffff60608301511660608401526080820151608084015260a082015160c060a0850152805160088110611451576114516113a3565b60c085015260208101516006811061146b5761146b6113a3565b60e0850152604081015163ffffffff1661010085015260600151608061012085015261139b610140850182611335565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015611510577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526114fb8583516113e4565b945060209384019391909101906001016114c1565b50929695505050505050565b5f6020828403121561152c575f80fd5b5035919050565b602081525f6112c060208301846113e4565b602081525f6112c06020830184611335565b6115628282516113d0565b6020810151602083015260ff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff6060820151166060830152608081015160808301525050565b60a081016102c58284611557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611605576116056115b5565b60405290565b60405160c0810167ffffffffffffffff81118282101715611605576116056115b5565b6040516080810167ffffffffffffffff81118282101715611605576116056115b5565b80356002811061165f575f80fd5b919050565b803560ff8116811461165f575f80fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461165f575f80fd5b5f60a082840312156116a7575f80fd5b6116af6115e2565b90506116ba82611651565b8152602082810135908201526116d260408301611664565b60408201526116e360608301611674565b606082015260809182013591810191909152919050565b5f82601f830112611709575f80fd5b813567ffffffffffffffff811115611723576117236115b5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715611770576117706115b5565b604052818152838201602001851015611787575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c082840312156117b3575f80fd5b6117bb61160b565b8235815290506117cd60208301611651565b60208201526117de60408301611664565b60408201526117ef60608301611674565b60608201526080828101359082015260a082013567ffffffffffffffff811115611817575f80fd5b820160808185031215611828575f80fd5b61183061162e565b81356008811061183e575f80fd5b8152602082013560068110611851575f80fd5b6020820152604082013563ffffffff8116811461186c575f80fd5b6040820152606082013567ffffffffffffffff81111561188a575f80fd5b611896868285016116fa565b60608301525060a08301525092915050565b5f602082840312156118b8575f80fd5b813567ffffffffffffffff8111156118ce575f80fd5b820161012081850312156118e0575f80fd5b6118e86115e2565b6118f28583611697565b815260a082013567ffffffffffffffff81111561190d575f80fd5b611919868285016117a3565b60208301525060c082013567ffffffffffffffff811115611938575f80fd5b611944868285016117a3565b60408301525060e082013567ffffffffffffffff811115611963575f80fd5b61196f868285016117a3565b60608301525061010082013567ffffffffffffffff81111561198f575f80fd5b61199b868285016117a3565b608083015250949350505050565b600181811c908216806119bd57607f821691505b6020821081036119f4577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b601f82111561039b57805f5260205f20601f840160051c81016020851015611a4c5750805b601f840160051c820191505b81811015611a6b575f8155600101611a58565b5050505050565b815167ffffffffffffffff811115611a8c57611a8c6115b5565b611aa081611a9a84546119a9565b84611a27565b6020601f821160018114611af1575f8315611abb5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a6b565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611b3e5787850151825560209485019460019092019101611b1e565b5084821015611b7a57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b611b938187611557565b61012060a08201525f611baa6101208301876113e4565b82810360c0840152611bbc81876113e4565b905082810360e0840152611bd081866113e4565b9050828103610100840152611be581856113e4565b9897505050505050505056fea2646970667358221220a8f9468bd81df646b95b9d19599966d6a1b1f344117e00f66aa985f1fdfee66b64736f6c634300081a0033",Gf="0x6080604052600436106100ad575f3560e01c80639bc1cf8111610066578063d7768c471161004c578063d7768c4714610206578063dbdf211014610232578063ddd6ab0814610253575f80fd5b80639bc1cf81146101b9578063c26624e8146101da575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb14610140578063439fab9114610198575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb366004611281565b610270565b60405190151581526020015b60405180910390f35b6100f86100f33660046112c7565b6102cb565b6040516100dc929190611381565b348015610111575f80fd5b506040517f7687b0ed0000000000000000000000000000000000000000000000000000000081526020016100dc565b34801561014b575f80fd5b506101737f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101a3575f80fd5b506101b76101b23660046112c7565b610300565b005b3480156101c4575f80fd5b506101cd6103a0565b6040516100dc919061149b565b3480156101e5575f80fd5b506101f96101f436600461151c565b61059f565b6040516100dc9190611533565b348015610211575f80fd5b506102256102203660046112c7565b61077a565b6040516100dc9190611545565b34801561023d575f80fd5b506102466107ae565b6040516100dc91906115a7565b34801561025e575f80fd5b506004546040519081526020016100dc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7687b0ed0000000000000000000000000000000000000000000000000000000014806102c557506102c582610858565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156103515760018160011c14303b106103485763f92ee8a95f526004601cfd5b818160ff1b1b91505b50610366610361838501856118a8565b6108ad565b801561039b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b82821015610596578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff166001811115610410576104106113a3565b6001811115610421576104216113a3565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610494576104946113a3565b60078111156104a5576104a56113a3565b81528154602090910190610100900460ff1660058111156104c8576104c86113a3565b60058111156104d9576104d96113a3565b8152815462010000900463ffffffff166020820152600182018054604090920191610503906119a9565b80601f016020809104026020016040519081016040528092919081815260200182805461052f906119a9565b801561057a5780601f106105515761010080835404028352916020019161057a565b820191905f5260205f20905b81548152906001019060200180831161055d57829003601f168201915b50505050508152505081525050815260200190600101906103c3565b50505050905090565b6105a7611226565b600482815481106105ba576105ba6119fa565b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156105fd576105fd6113a3565b600181111561060e5761060e6113a3565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610681576106816113a3565b6007811115610692576106926113a3565b81528154602090910190610100900460ff1660058111156106b5576106b56113a3565b60058111156106c6576106c66113a3565b8152815462010000900463ffffffff1660208201526001820180546040909201916106f0906119a9565b80601f016020809104026020016040519081016040528092919081815260200182805461071c906119a9565b80156107675780601f1061073e57610100808354040283529160200191610767565b820191905f5260205f20905b81548152906001019060200180831161074a57829003601f168201915b5050509190925250505090525092915050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040805160a081019091525f8054829060ff1660018111156107fc576107fc6113a3565b600181111561080d5761080d6113a3565b815260018201546020820152600282015460ff81166040830152610100900473ffffffffffffffffffffffffffffffffffffffff166060820152600390910154608090910152919050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102c557506102c582611156565b6108b56111ec565b805180515f8054909190829060ff1916600183818111156108d8576108d86113a3565b02179055506020828101516001808401919091556040840151600284018054606087015173ffffffffffffffffffffffffffffffffffffffff16610100027fffffffffffffffffffffff00000000000000000000000000000000000000000090911660ff90931692909217919091179055608090930151600390920191909155828101516004805480850182555f91909152815160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b8101918255928201517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c90930180549294919392909160ff19919091169083818111156109e1576109e16113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610aa257610aa26113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610ae757610ae76113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610b3b9082611a72565b505050604083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610bcc57610bcc6113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610c8d57610c8d6113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610cd257610cd26113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610d269082611a72565b505050606083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610db757610db76113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610e7857610e786113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610ebd57610ebd6113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610f119082611a72565b505050608083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610fa257610fa26113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115611063576110636113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008360058111156110a8576110a86113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff909116178155606082015160018201906110fc9082611a72565b50505050507fdc8145a6c863ebd27b18aa903b7f82f1015527a05a81f227ef06ab79616082b4815f0151826020015183604001518460600151856080015160405161114b959493929190611b89565b60405180910390a150565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102c557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102c5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546001166112235763d7e6bcf85f526004601cfd5b50565b6040805160c081019091525f808252602082019081525f6020820181905260408201819052606082015260800161127c6040805160808101909152805f81526020015f81525f6020820152606060409091015290565b905290565b5f60208284031215611291575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112c0575f80fd5b9392505050565b5f80602083850312156112d8575f80fd5b823567ffffffffffffffff8111156112ee575f80fd5b8301601f810185136112fe575f80fd5b803567ffffffffffffffff811115611314575f80fd5b856020828401011115611325575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f61139b6040830184611335565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106113e0576113e06113a3565b9052565b805182525f60208201516113fb60208501826113d0565b5060ff604083015116604084015273ffffffffffffffffffffffffffffffffffffffff60608301511660608401526080820151608084015260a082015160c060a0850152805160088110611451576114516113a3565b60c085015260208101516006811061146b5761146b6113a3565b60e0850152604081015163ffffffff1661010085015260600151608061012085015261139b610140850182611335565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015611510577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526114fb8583516113e4565b945060209384019391909101906001016114c1565b50929695505050505050565b5f6020828403121561152c575f80fd5b5035919050565b602081525f6112c060208301846113e4565b602081525f6112c06020830184611335565b6115628282516113d0565b6020810151602083015260ff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff6060820151166060830152608081015160808301525050565b60a081016102c58284611557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611605576116056115b5565b60405290565b60405160c0810167ffffffffffffffff81118282101715611605576116056115b5565b6040516080810167ffffffffffffffff81118282101715611605576116056115b5565b80356002811061165f575f80fd5b919050565b803560ff8116811461165f575f80fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461165f575f80fd5b5f60a082840312156116a7575f80fd5b6116af6115e2565b90506116ba82611651565b8152602082810135908201526116d260408301611664565b60408201526116e360608301611674565b606082015260809182013591810191909152919050565b5f82601f830112611709575f80fd5b813567ffffffffffffffff811115611723576117236115b5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715611770576117706115b5565b604052818152838201602001851015611787575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c082840312156117b3575f80fd5b6117bb61160b565b8235815290506117cd60208301611651565b60208201526117de60408301611664565b60408201526117ef60608301611674565b60608201526080828101359082015260a082013567ffffffffffffffff811115611817575f80fd5b820160808185031215611828575f80fd5b61183061162e565b81356008811061183e575f80fd5b8152602082013560068110611851575f80fd5b6020820152604082013563ffffffff8116811461186c575f80fd5b6040820152606082013567ffffffffffffffff81111561188a575f80fd5b611896868285016116fa565b60608301525060a08301525092915050565b5f602082840312156118b8575f80fd5b813567ffffffffffffffff8111156118ce575f80fd5b820161012081850312156118e0575f80fd5b6118e86115e2565b6118f28583611697565b815260a082013567ffffffffffffffff81111561190d575f80fd5b611919868285016117a3565b60208301525060c082013567ffffffffffffffff811115611938575f80fd5b611944868285016117a3565b60408301525060e082013567ffffffffffffffff811115611963575f80fd5b61196f868285016117a3565b60608301525061010082013567ffffffffffffffff81111561198f575f80fd5b61199b868285016117a3565b608083015250949350505050565b600181811c908216806119bd57607f821691505b6020821081036119f4577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b601f82111561039b57805f5260205f20601f840160051c81016020851015611a4c5750805b601f840160051c820191505b81811015611a6b575f8155600101611a58565b5050505050565b815167ffffffffffffffff811115611a8c57611a8c6115b5565b611aa081611a9a84546119a9565b84611a27565b6020601f821160018114611af1575f8315611abb5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a6b565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611b3e5787850151825560209485019460019092019101611b1e565b5084821015611b7a57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b611b938187611557565b61012060a08201525f611baa6101208301876113e4565b82810360c0840152611bbc81876113e4565b905082810360e0840152611bd081866113e4565b9050828103610100840152611be581856113e4565b9897505050505050505056fea2646970667358221220a8f9468bd81df646b95b9d19599966d6a1b1f344117e00f66aa985f1fdfee66b64736f6c634300081a0033",Vf={},Uf={},_0={_format:Hf,contractName:Ff,sourceName:kf,abi:Sf,bytecode:Df,deployedBytecode:Gf,linkReferences:Vf,deployedLinkReferences:Uf},qf="hh-sol-artifact-1",jf="OffchainAccessList",Zf="contracts/allowlists/OffchainAccessList.sol",Wf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[{internalType:"string",name:"id",type:"string"}],name:"AccessListIdNotFound",type:"error"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"id_",type:"string"}],name:"addAllowListId",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"id_",type:"string"}],name:"addDenyListId",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"allowlistIds",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"denylistIds",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAllowListIds",outputs:[{internalType:"string[]",name:"",type:"string[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"getDenyListIds",outputs:[{internalType:"string[]",name:"",type:"string[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"id_",type:"string"}],name:"hasAllowListId",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"id_",type:"string"}],name:"hasDenyListId",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isAllowed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"id_",type:"string"}],name:"removeAllowListId",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"id_",type:"string"}],name:"removeDenyListId",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string[]",name:"ids_",type:"string[]"}],name:"setAllowListIds",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string[]",name:"ids_",type:"string[]"}],name:"setDenyListIds",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:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Kf="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612127806100895f395ff3fe608060405260043610610229575f3560e01c8063859aa08911610131578063e89079fa116100ac578063f04e283e1161007c578063fdee627a11610062578063fdee627a14610620578063fe9fbb8014610634578063fee81cf414610653575f80fd5b8063f04e283e146105fa578063f2fde38b1461060d575f80fd5b8063e89079fa14610587578063ec87621c146105a6578063ef05bda9146105ba578063ef4550bf146105d9575f80fd5b8063be4994f811610101578063dcc21361116100e7578063dcc2136114610526578063e3f756de14610545578063e611205f14610568575f80fd5b8063be4994f8146104e8578063cbb7de5114610507575f80fd5b8063859aa089146104535780638da5cb5b14610472578063937d599c146104aa57806399927eec146104c9575f80fd5b80632de94807116101c1578063514e62fc11610191578063715018a611610177578063715018a61461041857806375b238fc146104205780637e973e8214610434575f80fd5b8063514e62fc146103db57806354d1f13d14610410575f80fd5b80632de948071461034b5780634359d28a1461038a578063439fab91146103a95780634a4ee7b1146103c8575f80fd5b80631cd64df4116101fc5780631cd64df4146102b557806325692962146102ea57806328d6183b146102f25780632c297c181461032c575f80fd5b806301ffc9a71461022d578063096f199f14610261578063183a4f6e1461028d5780631c10893f146102a2575b5f80fd5b348015610238575f80fd5b5061024c610247366004611725565b610684565b60405190151581526020015b60405180910390f35b34801561026c575f80fd5b5061028061027b36600461176b565b6106df565b60405161025891906117b0565b6102a061029b36600461176b565b610785565b005b6102a06102b03660046117e3565b610792565b3480156102c0575f80fd5b5061024c6102cf3660046117e3565b638b78c6d8600c9081525f9290925260209091205481161490565b6102a06107a8565b3480156102fd575f80fd5b506040517f2a6b3c38000000000000000000000000000000000000000000000000000000008152602001610258565b348015610337575f80fd5b506102a0610346366004611852565b6107f5565b348015610356575f80fd5b5061037c610365366004611891565b638b78c6d8600c9081525f91909152602090205490565b604051908152602001610258565b348015610395575f80fd5b506102a06103a43660046118ed565b6108ea565b3480156103b4575f80fd5b506102a06103c3366004611852565b6109e4565b6102a06103d63660046117e3565b610ab7565b3480156103e6575f80fd5b5061024c6103f53660046117e3565b638b78c6d8600c9081525f9290925260209091205416151590565b6102a0610ac9565b6102a0610b02565b34801561042b575f80fd5b5061037c600281565b34801561043f575f80fd5b506102a061044e366004611852565b610b15565b34801561045e575f80fd5b506102a061046d366004611959565b610bfe565b34801561047d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610258565b3480156104b5575f80fd5b5061024c6104c4366004611852565b610ca0565b3480156104d4575f80fd5b5061024c6104e3366004611852565b610d15565b3480156104f3575f80fd5b506102a06105023660046118ed565b610d7f565b348015610512575f80fd5b506102a0610521366004611959565b610e1d565b348015610531575f80fd5b506102a06105403660046118ed565b610ebd565b348015610550575f80fd5b5061024c61055f36600461198c565b60019392505050565b348015610573575f80fd5b5061028061058236600461176b565b610f5b565b348015610592575f80fd5b506102a06105a1366004611852565b610f69565b3480156105b1575f80fd5b5061037c600181565b3480156105c5575f80fd5b506102a06105d4366004611852565b6110bc565b3480156105e4575f80fd5b506105ed6111bc565b60405161025891906119dd565b6102a0610608366004611891565b611290565b6102a061061b366004611891565b6112ca565b34801561062b575f80fd5b506105ed6112f0565b34801561063f575f80fd5b5061024c61064e366004611891565b6113ba565b34801561065e575f80fd5b5061037c61066d366004611891565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f2a6b3c380000000000000000000000000000000000000000000000000000000014806106d957506106d982611419565b92915050565b600181815481106106ee575f80fd5b905f5260205f20015f91509050805461070690611a5e565b80601f016020809104026020016040519081016040528092919081815260200182805461073290611a5e565b801561077d5780601f106107545761010080835404028352916020019161077d565b820191905f5260205f20905b81548152906001019060200180831161076057829003601f168201915b505050505081565b61078f338261146e565b50565b61079a611479565b6107a48282611493565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6107fe336113ba565b610834576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61083e8282610ca0565b156108aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f44656e796c69737420494420616c72656164792065786973747300000000000060448201526064015b60405180910390fd5b6001805480820182555f919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6016108e5828483611b27565b505050565b60026108f58161149f565b83821461092e576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109dc575f84848381811061094b5761094b611be1565b90506020020160208101906109609190611c0e565b90508015156001036109a25761099d87878481811061098157610981611be1565b90506020020160208101906109969190611891565b6001611493565b6109d3565b6109d38787848181106109b7576109b7611be1565b90506020020160208101906109cc9190611891565b600161146e565b50600101610930565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610a355760018160011c14303b10610a2c5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8080610a4585870187611d5e565b925092509250610a54836114d0565b8151610a66905f90602085019061164f565b508051610a7a90600190602084019061164f565b5050505080156108e5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a1505050565b610abf611479565b6107a4828261146e565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610b0a611479565b610b135f611518565b565b610b1e336113ba565b610b54576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b5e8282610d15565b15610bc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f416c6c6f776c69737420494420616c726561647920657869737473000000000060448201526064016108a1565b5f80546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563016108e5828483611b27565b610c07336113ba565b610c3d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c4860015f6116a3565b5f5b818110156108e5576001838383818110610c6657610c66611be1565b9050602002810190610c789190611dd4565b82546001810184555f938452602090932090920191610c979183611b27565b50600101610c4a565b5f805b600154811015610d0c578383604051610cbd929190611e35565b604051809103902060018281548110610cd857610cd8611be1565b905f5260205f2001604051610ced9190611e44565b604051809103902003610d045760019150506106d9565b600101610ca3565b505f9392505050565b5f805b5f54811015610d0c578383604051610d31929190611e35565b60405180910390205f8281548110610d4b57610d4b611be1565b905f5260205f2001604051610d609190611e44565b604051809103902003610d775760019150506106d9565b600101610d18565b6002610d8a8161149f565b838214610dc3576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109dc57610e15868683818110610de257610de2611be1565b9050602002016020810190610df79190611891565b858584818110610e0957610e09611be1565b90506020020135611493565b600101610dc5565b610e26336113ba565b610e5c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e665f806116a3565b5f5b818110156108e5575f838383818110610e8357610e83611be1565b9050602002810190610e959190611dd4565b82546001810184555f938452602090932090920191610eb49183611b27565b50600101610e68565b6002610ec88161149f565b838214610f01576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109dc57610f53868683818110610f2057610f20611be1565b9050602002016020810190610f359190611891565b858584818110610f4757610f47611be1565b9050602002013561146e565b600101610f03565b5f81815481106106ee575f80fd5b610f72336113ba565b610fa8576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b5f54811015611085578282604051610fc3929190611e35565b60405180910390205f8281548110610fdd57610fdd611be1565b905f5260205f2001604051610ff29190611e44565b60405180910390200361107d575f805461100e90600190611ed3565b8154811061101e5761101e611be1565b905f5260205f20015f828154811061103857611038611be1565b905f5260205f2001908161104c9190611f0b565b505f80548061105d5761105d611fe3565b600190038181905f5260205f20015f61107691906116be565b9055505050565b600101610faa565b5081816040517f8cf9845e0000000000000000000000000000000000000000000000000000000081526004016108a1929190612010565b6110c5336113ba565b6110fb576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b600154811015611085578282604051611117929190611e35565b60405180910390206001828154811061113257611132611be1565b905f5260205f20016040516111479190611e44565b6040518091039020036111b45760018054611163908290611ed3565b8154811061117357611173611be1565b905f5260205f20016001828154811061118e5761118e611be1565b905f5260205f200190816111a29190611f0b565b50600180548061105d5761105d611fe3565b6001016110fd565b60606001805480602002602001604051908101604052809291908181526020015f905b82821015611287578382905f5260205f200180546111fc90611a5e565b80601f016020809104026020016040519081016040528092919081815260200182805461122890611a5e565b80156112735780601f1061124a57610100808354040283529160200191611273565b820191905f5260205f20905b81548152906001019060200180831161125657829003601f168201915b5050505050815260200190600101906111df565b50505050905090565b611298611479565b63389a75e1600c52805f526020600c2080544211156112be57636f5e88185f526004601cfd5b5f905561078f81611518565b6112d2611479565b8060601b6112e757637448fbae5f526004601cfd5b61078f81611518565b60605f805480602002602001604051908101604052809291908181526020015f905b82821015611287578382905f5260205f2001805461132f90611a5e565b80601f016020809104026020016040519081016040528092919081815260200182805461135b90611a5e565b80156113a65780601f1061137d576101008083540402835291602001916113a6565b820191905f5260205f20905b81548152906001019060200180831161138957829003601f168201915b505050505081526020019060010190611312565b5f8173ffffffffffffffffffffffffffffffffffffffff166113df638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106d95750638b78c6d8600c9081525f839052602090205460031615156106d9565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806106d957506106d982611562565b6107a482825f6115f8565b638b78c6d819543314610b13576382b429005f526004601cfd5b6107a4828260016115f8565b638b78c6d81954331461078f57638b78c6d8600c52335f52806020600c20541661078f576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106d957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106d9565b638b78c6d8600c52825f526020600c20805483811783611619575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b828054828255905f5260205f20908101928215611693579160200282015b828111156116935782518290611683908261203e565b509160200191906001019061166d565b5061169f9291506116f5565b5090565b5080545f8255905f5260205f209081019061078f91906116f5565b5080546116ca90611a5e565b5f825580601f106116d9575050565b601f0160209004905f5260205f209081019061078f9190611711565b8082111561169f575f61170882826116be565b506001016116f5565b5b8082111561169f575f8155600101611712565b5f60208284031215611735575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611764575f80fd5b9392505050565b5f6020828403121561177b575f80fd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6117646020830184611782565b73ffffffffffffffffffffffffffffffffffffffff8116811461078f575f80fd5b5f80604083850312156117f4575f80fd5b82356117ff816117c2565b946020939093013593505050565b5f8083601f84011261181d575f80fd5b50813567ffffffffffffffff811115611834575f80fd5b60208301915083602082850101111561184b575f80fd5b9250929050565b5f8060208385031215611863575f80fd5b823567ffffffffffffffff811115611879575f80fd5b6118858582860161180d565b90969095509350505050565b5f602082840312156118a1575f80fd5b8135611764816117c2565b5f8083601f8401126118bc575f80fd5b50813567ffffffffffffffff8111156118d3575f80fd5b6020830191508360208260051b850101111561184b575f80fd5b5f805f8060408587031215611900575f80fd5b843567ffffffffffffffff811115611916575f80fd5b611922878288016118ac565b909550935050602085013567ffffffffffffffff811115611941575f80fd5b61194d878288016118ac565b95989497509550505050565b5f806020838503121561196a575f80fd5b823567ffffffffffffffff811115611980575f80fd5b611885858286016118ac565b5f805f6040848603121561199e575f80fd5b83356119a9816117c2565b9250602084013567ffffffffffffffff8111156119c4575f80fd5b6119d08682870161180d565b9497909650939450505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015611a52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452611a3d858351611782565b94506020938401939190910190600101611a03565b50929695505050505050565b600181811c90821680611a7257607f821691505b602082108103611aa9577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b601f8211156108e557805f5260205f20601f840160051c81016020851015611b015750805b601f840160051c820191505b81811015611b20575f8155600101611b0d565b5050505050565b67ffffffffffffffff831115611b3f57611b3f611aaf565b611b5383611b4d8354611a5e565b83611adc565b5f601f841160018114611b84575f8515611b6d5750838201355b5f19600387901b1c1916600186901b178355611b20565b5f83815260208120601f198716915b82811015611bb35786850135825560209485019460019092019101611b93565b5086821015611bcf575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611c1e575f80fd5b81358015158114611764575f80fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611c5657611c56611aaf565b604052919050565b5f82601f830112611c6d575f80fd5b813567ffffffffffffffff811115611c8757611c87611aaf565b8060051b611c9760208201611c2d565b91825260208185018101929081019086841115611cb2575f80fd5b6020860192505b83831015611d5457823567ffffffffffffffff811115611cd7575f80fd5b8601603f81018813611ce7575f80fd5b602081013567ffffffffffffffff811115611d0457611d04611aaf565b611d176020601f19601f84011601611c2d565b8181526040838301018a1015611d2b575f80fd5b816040840160208301375f60208383010152808552505050602082019150602083019250611cb9565b9695505050505050565b5f805f60608486031215611d70575f80fd5b8335611d7b816117c2565b9250602084013567ffffffffffffffff811115611d96575f80fd5b611da286828701611c5e565b925050604084013567ffffffffffffffff811115611dbe575f80fd5b611dca86828701611c5e565b9150509250925092565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611e07575f80fd5b83018035915067ffffffffffffffff821115611e21575f80fd5b60200191503681900382131561184b575f80fd5b818382375f9101908152919050565b5f808354611e5181611a5e565b600182168015611e685760018114611e9b57611ec8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083168652811515820286019350611ec8565b865f5260205f205f5b83811015611ec057815488820152600190910190602001611ea4565b505081860193505b509195945050505050565b818103818111156106d9577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103611f16575050565b611f208254611a5e565b67ffffffffffffffff811115611f3857611f38611aaf565b611f4c81611f468454611a5e565b84611adc565b5f601f821160018114611f80575f8315611f665750848201545b600184901b5f19600386901b1c198216175b855550611b20565b5f8581526020808220868352908220601f198616925b83811015611fb65782860154825560019586019590910190602001611f96565b5085831015611fd357818501545f19600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b815167ffffffffffffffff81111561205857612058611aaf565b61206681611f468454611a5e565b6020601f821160018114612096575f8315611f66575081850151600184901b5f19600386901b1c19821617611f78565b5f84815260208120601f198516915b828110156120c557878501518255602094850194600190920191016120a5565b50848210156120e257868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea26469706673582212206100a11e4e0b5bdd589ed060e5af18faef222dc9a5fb78d50ce02911e161f36664736f6c634300081a0033",Yf="0x608060405260043610610229575f3560e01c8063859aa08911610131578063e89079fa116100ac578063f04e283e1161007c578063fdee627a11610062578063fdee627a14610620578063fe9fbb8014610634578063fee81cf414610653575f80fd5b8063f04e283e146105fa578063f2fde38b1461060d575f80fd5b8063e89079fa14610587578063ec87621c146105a6578063ef05bda9146105ba578063ef4550bf146105d9575f80fd5b8063be4994f811610101578063dcc21361116100e7578063dcc2136114610526578063e3f756de14610545578063e611205f14610568575f80fd5b8063be4994f8146104e8578063cbb7de5114610507575f80fd5b8063859aa089146104535780638da5cb5b14610472578063937d599c146104aa57806399927eec146104c9575f80fd5b80632de94807116101c1578063514e62fc11610191578063715018a611610177578063715018a61461041857806375b238fc146104205780637e973e8214610434575f80fd5b8063514e62fc146103db57806354d1f13d14610410575f80fd5b80632de948071461034b5780634359d28a1461038a578063439fab91146103a95780634a4ee7b1146103c8575f80fd5b80631cd64df4116101fc5780631cd64df4146102b557806325692962146102ea57806328d6183b146102f25780632c297c181461032c575f80fd5b806301ffc9a71461022d578063096f199f14610261578063183a4f6e1461028d5780631c10893f146102a2575b5f80fd5b348015610238575f80fd5b5061024c610247366004611725565b610684565b60405190151581526020015b60405180910390f35b34801561026c575f80fd5b5061028061027b36600461176b565b6106df565b60405161025891906117b0565b6102a061029b36600461176b565b610785565b005b6102a06102b03660046117e3565b610792565b3480156102c0575f80fd5b5061024c6102cf3660046117e3565b638b78c6d8600c9081525f9290925260209091205481161490565b6102a06107a8565b3480156102fd575f80fd5b506040517f2a6b3c38000000000000000000000000000000000000000000000000000000008152602001610258565b348015610337575f80fd5b506102a0610346366004611852565b6107f5565b348015610356575f80fd5b5061037c610365366004611891565b638b78c6d8600c9081525f91909152602090205490565b604051908152602001610258565b348015610395575f80fd5b506102a06103a43660046118ed565b6108ea565b3480156103b4575f80fd5b506102a06103c3366004611852565b6109e4565b6102a06103d63660046117e3565b610ab7565b3480156103e6575f80fd5b5061024c6103f53660046117e3565b638b78c6d8600c9081525f9290925260209091205416151590565b6102a0610ac9565b6102a0610b02565b34801561042b575f80fd5b5061037c600281565b34801561043f575f80fd5b506102a061044e366004611852565b610b15565b34801561045e575f80fd5b506102a061046d366004611959565b610bfe565b34801561047d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610258565b3480156104b5575f80fd5b5061024c6104c4366004611852565b610ca0565b3480156104d4575f80fd5b5061024c6104e3366004611852565b610d15565b3480156104f3575f80fd5b506102a06105023660046118ed565b610d7f565b348015610512575f80fd5b506102a0610521366004611959565b610e1d565b348015610531575f80fd5b506102a06105403660046118ed565b610ebd565b348015610550575f80fd5b5061024c61055f36600461198c565b60019392505050565b348015610573575f80fd5b5061028061058236600461176b565b610f5b565b348015610592575f80fd5b506102a06105a1366004611852565b610f69565b3480156105b1575f80fd5b5061037c600181565b3480156105c5575f80fd5b506102a06105d4366004611852565b6110bc565b3480156105e4575f80fd5b506105ed6111bc565b60405161025891906119dd565b6102a0610608366004611891565b611290565b6102a061061b366004611891565b6112ca565b34801561062b575f80fd5b506105ed6112f0565b34801561063f575f80fd5b5061024c61064e366004611891565b6113ba565b34801561065e575f80fd5b5061037c61066d366004611891565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f2a6b3c380000000000000000000000000000000000000000000000000000000014806106d957506106d982611419565b92915050565b600181815481106106ee575f80fd5b905f5260205f20015f91509050805461070690611a5e565b80601f016020809104026020016040519081016040528092919081815260200182805461073290611a5e565b801561077d5780601f106107545761010080835404028352916020019161077d565b820191905f5260205f20905b81548152906001019060200180831161076057829003601f168201915b505050505081565b61078f338261146e565b50565b61079a611479565b6107a48282611493565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6107fe336113ba565b610834576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61083e8282610ca0565b156108aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f44656e796c69737420494420616c72656164792065786973747300000000000060448201526064015b60405180910390fd5b6001805480820182555f919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6016108e5828483611b27565b505050565b60026108f58161149f565b83821461092e576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109dc575f84848381811061094b5761094b611be1565b90506020020160208101906109609190611c0e565b90508015156001036109a25761099d87878481811061098157610981611be1565b90506020020160208101906109969190611891565b6001611493565b6109d3565b6109d38787848181106109b7576109b7611be1565b90506020020160208101906109cc9190611891565b600161146e565b50600101610930565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610a355760018160011c14303b10610a2c5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8080610a4585870187611d5e565b925092509250610a54836114d0565b8151610a66905f90602085019061164f565b508051610a7a90600190602084019061164f565b5050505080156108e5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a1505050565b610abf611479565b6107a4828261146e565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610b0a611479565b610b135f611518565b565b610b1e336113ba565b610b54576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b5e8282610d15565b15610bc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f416c6c6f776c69737420494420616c726561647920657869737473000000000060448201526064016108a1565b5f80546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563016108e5828483611b27565b610c07336113ba565b610c3d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c4860015f6116a3565b5f5b818110156108e5576001838383818110610c6657610c66611be1565b9050602002810190610c789190611dd4565b82546001810184555f938452602090932090920191610c979183611b27565b50600101610c4a565b5f805b600154811015610d0c578383604051610cbd929190611e35565b604051809103902060018281548110610cd857610cd8611be1565b905f5260205f2001604051610ced9190611e44565b604051809103902003610d045760019150506106d9565b600101610ca3565b505f9392505050565b5f805b5f54811015610d0c578383604051610d31929190611e35565b60405180910390205f8281548110610d4b57610d4b611be1565b905f5260205f2001604051610d609190611e44565b604051809103902003610d775760019150506106d9565b600101610d18565b6002610d8a8161149f565b838214610dc3576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109dc57610e15868683818110610de257610de2611be1565b9050602002016020810190610df79190611891565b858584818110610e0957610e09611be1565b90506020020135611493565b600101610dc5565b610e26336113ba565b610e5c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e665f806116a3565b5f5b818110156108e5575f838383818110610e8357610e83611be1565b9050602002810190610e959190611dd4565b82546001810184555f938452602090932090920191610eb49183611b27565b50600101610e68565b6002610ec88161149f565b838214610f01576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109dc57610f53868683818110610f2057610f20611be1565b9050602002016020810190610f359190611891565b858584818110610f4757610f47611be1565b9050602002013561146e565b600101610f03565b5f81815481106106ee575f80fd5b610f72336113ba565b610fa8576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b5f54811015611085578282604051610fc3929190611e35565b60405180910390205f8281548110610fdd57610fdd611be1565b905f5260205f2001604051610ff29190611e44565b60405180910390200361107d575f805461100e90600190611ed3565b8154811061101e5761101e611be1565b905f5260205f20015f828154811061103857611038611be1565b905f5260205f2001908161104c9190611f0b565b505f80548061105d5761105d611fe3565b600190038181905f5260205f20015f61107691906116be565b9055505050565b600101610faa565b5081816040517f8cf9845e0000000000000000000000000000000000000000000000000000000081526004016108a1929190612010565b6110c5336113ba565b6110fb576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b600154811015611085578282604051611117929190611e35565b60405180910390206001828154811061113257611132611be1565b905f5260205f20016040516111479190611e44565b6040518091039020036111b45760018054611163908290611ed3565b8154811061117357611173611be1565b905f5260205f20016001828154811061118e5761118e611be1565b905f5260205f200190816111a29190611f0b565b50600180548061105d5761105d611fe3565b6001016110fd565b60606001805480602002602001604051908101604052809291908181526020015f905b82821015611287578382905f5260205f200180546111fc90611a5e565b80601f016020809104026020016040519081016040528092919081815260200182805461122890611a5e565b80156112735780601f1061124a57610100808354040283529160200191611273565b820191905f5260205f20905b81548152906001019060200180831161125657829003601f168201915b5050505050815260200190600101906111df565b50505050905090565b611298611479565b63389a75e1600c52805f526020600c2080544211156112be57636f5e88185f526004601cfd5b5f905561078f81611518565b6112d2611479565b8060601b6112e757637448fbae5f526004601cfd5b61078f81611518565b60605f805480602002602001604051908101604052809291908181526020015f905b82821015611287578382905f5260205f2001805461132f90611a5e565b80601f016020809104026020016040519081016040528092919081815260200182805461135b90611a5e565b80156113a65780601f1061137d576101008083540402835291602001916113a6565b820191905f5260205f20905b81548152906001019060200180831161138957829003601f168201915b505050505081526020019060010190611312565b5f8173ffffffffffffffffffffffffffffffffffffffff166113df638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106d95750638b78c6d8600c9081525f839052602090205460031615156106d9565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806106d957506106d982611562565b6107a482825f6115f8565b638b78c6d819543314610b13576382b429005f526004601cfd5b6107a4828260016115f8565b638b78c6d81954331461078f57638b78c6d8600c52335f52806020600c20541661078f576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106d957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106d9565b638b78c6d8600c52825f526020600c20805483811783611619575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b828054828255905f5260205f20908101928215611693579160200282015b828111156116935782518290611683908261203e565b509160200191906001019061166d565b5061169f9291506116f5565b5090565b5080545f8255905f5260205f209081019061078f91906116f5565b5080546116ca90611a5e565b5f825580601f106116d9575050565b601f0160209004905f5260205f209081019061078f9190611711565b8082111561169f575f61170882826116be565b506001016116f5565b5b8082111561169f575f8155600101611712565b5f60208284031215611735575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611764575f80fd5b9392505050565b5f6020828403121561177b575f80fd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6117646020830184611782565b73ffffffffffffffffffffffffffffffffffffffff8116811461078f575f80fd5b5f80604083850312156117f4575f80fd5b82356117ff816117c2565b946020939093013593505050565b5f8083601f84011261181d575f80fd5b50813567ffffffffffffffff811115611834575f80fd5b60208301915083602082850101111561184b575f80fd5b9250929050565b5f8060208385031215611863575f80fd5b823567ffffffffffffffff811115611879575f80fd5b6118858582860161180d565b90969095509350505050565b5f602082840312156118a1575f80fd5b8135611764816117c2565b5f8083601f8401126118bc575f80fd5b50813567ffffffffffffffff8111156118d3575f80fd5b6020830191508360208260051b850101111561184b575f80fd5b5f805f8060408587031215611900575f80fd5b843567ffffffffffffffff811115611916575f80fd5b611922878288016118ac565b909550935050602085013567ffffffffffffffff811115611941575f80fd5b61194d878288016118ac565b95989497509550505050565b5f806020838503121561196a575f80fd5b823567ffffffffffffffff811115611980575f80fd5b611885858286016118ac565b5f805f6040848603121561199e575f80fd5b83356119a9816117c2565b9250602084013567ffffffffffffffff8111156119c4575f80fd5b6119d08682870161180d565b9497909650939450505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015611a52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452611a3d858351611782565b94506020938401939190910190600101611a03565b50929695505050505050565b600181811c90821680611a7257607f821691505b602082108103611aa9577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b601f8211156108e557805f5260205f20601f840160051c81016020851015611b015750805b601f840160051c820191505b81811015611b20575f8155600101611b0d565b5050505050565b67ffffffffffffffff831115611b3f57611b3f611aaf565b611b5383611b4d8354611a5e565b83611adc565b5f601f841160018114611b84575f8515611b6d5750838201355b5f19600387901b1c1916600186901b178355611b20565b5f83815260208120601f198716915b82811015611bb35786850135825560209485019460019092019101611b93565b5086821015611bcf575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611c1e575f80fd5b81358015158114611764575f80fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611c5657611c56611aaf565b604052919050565b5f82601f830112611c6d575f80fd5b813567ffffffffffffffff811115611c8757611c87611aaf565b8060051b611c9760208201611c2d565b91825260208185018101929081019086841115611cb2575f80fd5b6020860192505b83831015611d5457823567ffffffffffffffff811115611cd7575f80fd5b8601603f81018813611ce7575f80fd5b602081013567ffffffffffffffff811115611d0457611d04611aaf565b611d176020601f19601f84011601611c2d565b8181526040838301018a1015611d2b575f80fd5b816040840160208301375f60208383010152808552505050602082019150602083019250611cb9565b9695505050505050565b5f805f60608486031215611d70575f80fd5b8335611d7b816117c2565b9250602084013567ffffffffffffffff811115611d96575f80fd5b611da286828701611c5e565b925050604084013567ffffffffffffffff811115611dbe575f80fd5b611dca86828701611c5e565b9150509250925092565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611e07575f80fd5b83018035915067ffffffffffffffff821115611e21575f80fd5b60200191503681900382131561184b575f80fd5b818382375f9101908152919050565b5f808354611e5181611a5e565b600182168015611e685760018114611e9b57611ec8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083168652811515820286019350611ec8565b865f5260205f205f5b83811015611ec057815488820152600190910190602001611ea4565b505081860193505b509195945050505050565b818103818111156106d9577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103611f16575050565b611f208254611a5e565b67ffffffffffffffff811115611f3857611f38611aaf565b611f4c81611f468454611a5e565b84611adc565b5f601f821160018114611f80575f8315611f665750848201545b600184901b5f19600386901b1c198216175b855550611b20565b5f8581526020808220868352908220601f198616925b83811015611fb65782860154825560019586019590910190602001611f96565b5085831015611fd357818501545f19600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b815167ffffffffffffffff81111561205857612058611aaf565b61206681611f468454611a5e565b6020601f821160018114612096575f8315611f66575081850151600184901b5f19600386901b1c19821617611f78565b5f84815260208120601f198516915b828110156120c557878501518255602094850194600190920191016120a5565b50848210156120e257868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea26469706673582212206100a11e4e0b5bdd589ed060e5af18faef222dc9a5fb78d50ce02911e161f36664736f6c634300081a0033",Qf={},Jf={},z0={_format:qf,contractName:jf,sourceName:Zf,abi:Wf,bytecode:Kf,deployedBytecode:Yf,linkReferences:Qf,deployedLinkReferences:Jf},Xf="hh-sol-artifact-1",f1="SimpleAllowList",e1="contracts/allowlists/SimpleAllowList.sol",b1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user_",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isAllowed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"users_",type:"address[]"},{internalType:"bool[]",name:"allowed_",type:"bool[]"}],name:"setAllowed",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",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:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],a1="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611160806100895f395ff3fe608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610445578063fe9fbb8014610458578063fee81cf414610477575f80fd5b8063e3f756de146103d8578063ec87621c1461041e578063f04e283e14610432575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b80632de9480711610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b80632de948071461025a5780633abb0604146102995780634359d28a146102b8575f80fd5b80631cd64df4116101615780631cd64df4146101e3578063256929621461021857806328d6183b14610220575f80fd5b806301ffc9a714610187578063183a4f6e146101bb5780631c10893f146101d0575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5e565b6104a8565b60405190151581526020015b60405180910390f35b6101ce6101c9366004610da4565b610503565b005b6101ce6101de366004610dec565b610510565b3480156101ee575f80fd5b506101a66101fd366004610dec565b638b78c6d8600c9081525f9290925260209091205481161490565b6101ce610526565b34801561022b575f80fd5b506040517f1392d7980000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610265575f80fd5b5061028b610274366004610e16565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102a4575f80fd5b506101ce6102b3366004610e79565b610573565b3480156102c3575f80fd5b506101ce6102d2366004610e79565b6106a6565b3480156102e2575f80fd5b506101ce6102f1366004610f23565b6107a0565b6101ce610304366004610dec565b6108cf565b348015610314575f80fd5b506101a6610323366004610dec565b638b78c6d8600c9081525f9290925260209091205416151590565b6101ce6108e1565b6101ce61091a565b348015610359575f80fd5b5061028b600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101ce6103b4366004610e79565b61092d565b3480156103c4575f80fd5b506101ce6103d3366004610e79565b6109cb565b3480156103e3575f80fd5b506101a66103f2366004610f62565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1690565b348015610429575f80fd5b5061028b600181565b6101ce610440366004610e16565b610a69565b6101ce610453366004610e16565b610aa3565b348015610463575f80fd5b506101a6610472366004610e16565b610ac9565b348015610482575f80fd5b5061028b610491366004610e16565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f1392d7980000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610b28565b92915050565b61050d3382610b7d565b50565b610518610b88565b6105228282610ba2565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b61057c33610ac9565b6105b2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8281146105eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8381101561069f5782828281811061060757610607610fb3565b905060200201602081019061061c9190610fe0565b5f8087878581811061063057610630610fb3565b90506020020160208101906106459190610e16565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016105ed565b5050505050565b60026106b181610bae565b8382146106ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798575f84848381811061070757610707610fb3565b905060200201602081019061071c9190610fe0565b905080151560010361075e5761075987878481811061073d5761073d610fb3565b90506020020160208101906107529190610e16565b6001610ba2565b61078f565b61078f87878481811061077357610773610fb3565b90506020020160208101906107889190610e16565b6001610b7d565b506001016106ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f15760018160011c14303b106107e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108008486018661102c565b9150915061080d82610bdf565b5f5b81518110156108925760015f8084848151811061082e5761082e610fb3565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161080f565b50505080156108ca576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d7610b88565b6105228282610b7d565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610922610b88565b61092b5f610c27565b565b600261093881610bae565b838214610971576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798576109c386868381811061099057610990610fb3565b90506020020160208101906109a59190610e16565b8585848181106109b7576109b7610fb3565b90506020020135610ba2565b600101610973565b60026109d681610bae565b838214610a0f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079857610a61868683818110610a2e57610a2e610fb3565b9050602002016020810190610a439190610e16565b858584818110610a5557610a55610fb3565b90506020020135610b7d565b600101610a11565b610a71610b88565b63389a75e1600c52805f526020600c208054421115610a9757636f5e88185f526004601cfd5b5f905561050d81610c27565b610aab610b88565b8060601b610ac057637448fbae5f526004601cfd5b61050d81610c27565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aee638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fd5750638b78c6d8600c9081525f839052602090205460031615156104fd565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610c71565b61052282825f610d07565b638b78c6d81954331461092b576382b429005f526004601cfd5b61052282826001610d07565b638b78c6d81954331461050d57638b78c6d8600c52335f52806020600c20541661050d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fd57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fd565b638b78c6d8600c52825f526020600c20805483811783610d28575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6e575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9d575f80fd5b9392505050565b5f60208284031215610db4575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461050d575f80fd5b8035610de781610dbb565b919050565b5f8060408385031215610dfd575f80fd5b8235610e0881610dbb565b946020939093013593505050565b5f60208284031215610e26575f80fd5b8135610d9d81610dbb565b5f8083601f840112610e41575f80fd5b50813567ffffffffffffffff811115610e58575f80fd5b6020830191508360208260051b8501011115610e72575f80fd5b9250929050565b5f805f8060408587031215610e8c575f80fd5b843567ffffffffffffffff811115610ea2575f80fd5b610eae87828801610e31565b909550935050602085013567ffffffffffffffff811115610ecd575f80fd5b610ed987828801610e31565b95989497509550505050565b5f8083601f840112610ef5575f80fd5b50813567ffffffffffffffff811115610f0c575f80fd5b602083019150836020828501011115610e72575f80fd5b5f8060208385031215610f34575f80fd5b823567ffffffffffffffff811115610f4a575f80fd5b610f5685828601610ee5565b90969095509350505050565b5f805f60408486031215610f74575f80fd5b8335610f7f81610dbb565b9250602084013567ffffffffffffffff811115610f9a575f80fd5b610fa686828701610ee5565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff0575f80fd5b81358015158114610d9d575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103d575f80fd5b823561104881610dbb565b9150602083013567ffffffffffffffff811115611063575f80fd5b8301601f81018513611073575f80fd5b803567ffffffffffffffff81111561108d5761108d610fff565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d8576110d8610fff565b6040529182526020818401810192908101888411156110f5575f80fd5b6020850194505b8385101561111b5761110d85610ddc565b8152602094850194016110fc565b5080945050505050925092905056fea26469706673582212208ea2f8d50b08c5f7201da49ca75834a3d5195e6d5f06fd686224f8d0cbbbc1f364736f6c634300081a0033",t1="0x608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610445578063fe9fbb8014610458578063fee81cf414610477575f80fd5b8063e3f756de146103d8578063ec87621c1461041e578063f04e283e14610432575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b80632de9480711610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b80632de948071461025a5780633abb0604146102995780634359d28a146102b8575f80fd5b80631cd64df4116101615780631cd64df4146101e3578063256929621461021857806328d6183b14610220575f80fd5b806301ffc9a714610187578063183a4f6e146101bb5780631c10893f146101d0575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5e565b6104a8565b60405190151581526020015b60405180910390f35b6101ce6101c9366004610da4565b610503565b005b6101ce6101de366004610dec565b610510565b3480156101ee575f80fd5b506101a66101fd366004610dec565b638b78c6d8600c9081525f9290925260209091205481161490565b6101ce610526565b34801561022b575f80fd5b506040517f1392d7980000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610265575f80fd5b5061028b610274366004610e16565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102a4575f80fd5b506101ce6102b3366004610e79565b610573565b3480156102c3575f80fd5b506101ce6102d2366004610e79565b6106a6565b3480156102e2575f80fd5b506101ce6102f1366004610f23565b6107a0565b6101ce610304366004610dec565b6108cf565b348015610314575f80fd5b506101a6610323366004610dec565b638b78c6d8600c9081525f9290925260209091205416151590565b6101ce6108e1565b6101ce61091a565b348015610359575f80fd5b5061028b600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101ce6103b4366004610e79565b61092d565b3480156103c4575f80fd5b506101ce6103d3366004610e79565b6109cb565b3480156103e3575f80fd5b506101a66103f2366004610f62565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1690565b348015610429575f80fd5b5061028b600181565b6101ce610440366004610e16565b610a69565b6101ce610453366004610e16565b610aa3565b348015610463575f80fd5b506101a6610472366004610e16565b610ac9565b348015610482575f80fd5b5061028b610491366004610e16565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f1392d7980000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610b28565b92915050565b61050d3382610b7d565b50565b610518610b88565b6105228282610ba2565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b61057c33610ac9565b6105b2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8281146105eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8381101561069f5782828281811061060757610607610fb3565b905060200201602081019061061c9190610fe0565b5f8087878581811061063057610630610fb3565b90506020020160208101906106459190610e16565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016105ed565b5050505050565b60026106b181610bae565b8382146106ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798575f84848381811061070757610707610fb3565b905060200201602081019061071c9190610fe0565b905080151560010361075e5761075987878481811061073d5761073d610fb3565b90506020020160208101906107529190610e16565b6001610ba2565b61078f565b61078f87878481811061077357610773610fb3565b90506020020160208101906107889190610e16565b6001610b7d565b506001016106ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f15760018160011c14303b106107e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108008486018661102c565b9150915061080d82610bdf565b5f5b81518110156108925760015f8084848151811061082e5761082e610fb3565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161080f565b50505080156108ca576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d7610b88565b6105228282610b7d565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610922610b88565b61092b5f610c27565b565b600261093881610bae565b838214610971576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798576109c386868381811061099057610990610fb3565b90506020020160208101906109a59190610e16565b8585848181106109b7576109b7610fb3565b90506020020135610ba2565b600101610973565b60026109d681610bae565b838214610a0f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079857610a61868683818110610a2e57610a2e610fb3565b9050602002016020810190610a439190610e16565b858584818110610a5557610a55610fb3565b90506020020135610b7d565b600101610a11565b610a71610b88565b63389a75e1600c52805f526020600c208054421115610a9757636f5e88185f526004601cfd5b5f905561050d81610c27565b610aab610b88565b8060601b610ac057637448fbae5f526004601cfd5b61050d81610c27565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aee638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fd5750638b78c6d8600c9081525f839052602090205460031615156104fd565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610c71565b61052282825f610d07565b638b78c6d81954331461092b576382b429005f526004601cfd5b61052282826001610d07565b638b78c6d81954331461050d57638b78c6d8600c52335f52806020600c20541661050d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fd57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fd565b638b78c6d8600c52825f526020600c20805483811783610d28575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6e575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9d575f80fd5b9392505050565b5f60208284031215610db4575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461050d575f80fd5b8035610de781610dbb565b919050565b5f8060408385031215610dfd575f80fd5b8235610e0881610dbb565b946020939093013593505050565b5f60208284031215610e26575f80fd5b8135610d9d81610dbb565b5f8083601f840112610e41575f80fd5b50813567ffffffffffffffff811115610e58575f80fd5b6020830191508360208260051b8501011115610e72575f80fd5b9250929050565b5f805f8060408587031215610e8c575f80fd5b843567ffffffffffffffff811115610ea2575f80fd5b610eae87828801610e31565b909550935050602085013567ffffffffffffffff811115610ecd575f80fd5b610ed987828801610e31565b95989497509550505050565b5f8083601f840112610ef5575f80fd5b50813567ffffffffffffffff811115610f0c575f80fd5b602083019150836020828501011115610e72575f80fd5b5f8060208385031215610f34575f80fd5b823567ffffffffffffffff811115610f4a575f80fd5b610f5685828601610ee5565b90969095509350505050565b5f805f60408486031215610f74575f80fd5b8335610f7f81610dbb565b9250602084013567ffffffffffffffff811115610f9a575f80fd5b610fa686828701610ee5565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff0575f80fd5b81358015158114610d9d575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103d575f80fd5b823561104881610dbb565b9150602083013567ffffffffffffffff811115611063575f80fd5b8301601f81018513611073575f80fd5b803567ffffffffffffffff81111561108d5761108d610fff565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d8576110d8610fff565b6040529182526020818401810192908101888411156110f5575f80fd5b6020850194505b8385101561111b5761110d85610ddc565b8152602094850194016110fc565b5080945050505050925092905056fea26469706673582212208ea2f8d50b08c5f7201da49ca75834a3d5195e6d5f06fd686224f8d0cbbbc1f364736f6c634300081a0033",d1={},n1={},B0={_format:Xf,contractName:f1,sourceName:e1,abi:b1,bytecode:a1,deployedBytecode:t1,linkReferences:d1,deployedLinkReferences:n1},c1="hh-sol-artifact-1",i1="SimpleDenyList",s1="contracts/allowlists/SimpleDenyList.sol",r1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user_",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isAllowed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"users_",type:"address[]"},{internalType:"bool[]",name:"denied_",type:"bool[]"}],name:"setDenied",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:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],p1="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611161806100895f395ff3fe608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610446578063fe9fbb8014610459578063fee81cf414610478575f80fd5b8063e3f756de146103d8578063ec87621c1461041f578063f04e283e14610433575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b806328d6183b11610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b806328d6183b1461023f5780632de94807146102795780634359d28a146102b8575f80fd5b80631c10893f116101615780631c10893f146101ef5780631cd64df4146102025780632569296214610237575f80fd5b806301ffc9a714610187578063141973b0146101bb578063183a4f6e146101dc575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5f565b6104a9565b60405190151581526020015b60405180910390f35b3480156101c6575f80fd5b506101da6101d5366004610ded565b610504565b005b6101da6101ea366004610e59565b610637565b6101da6101fd366004610ea1565b610644565b34801561020d575f80fd5b506101a661021c366004610ea1565b638b78c6d8600c9081525f9290925260209091205481161490565b6101da61065a565b34801561024a575f80fd5b506040517f3d30a22c0000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610284575f80fd5b506102aa610293366004610ecb565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102c3575f80fd5b506101da6102d2366004610ded565b6106a7565b3480156102e2575f80fd5b506101da6102f1366004610f24565b6107a1565b6101da610304366004610ea1565b6108d0565b348015610314575f80fd5b506101a6610323366004610ea1565b638b78c6d8600c9081525f9290925260209091205416151590565b6101da6108e2565b6101da61091b565b348015610359575f80fd5b506102aa600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101da6103b4366004610ded565b61092e565b3480156103c4575f80fd5b506101da6103d3366004610ded565b6109cc565b3480156103e3575f80fd5b506101a66103f2366004610f63565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff161590565b34801561042a575f80fd5b506102aa600181565b6101da610441366004610ecb565b610a6a565b6101da610454366004610ecb565b610aa4565b348015610464575f80fd5b506101a6610473366004610ecb565b610aca565b348015610483575f80fd5b506102aa610492366004610ecb565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f3d30a22c0000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610b29565b92915050565b61050d33610aca565b610543576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82811461057c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156106305782828281811061059857610598610fb4565b90506020020160208101906105ad9190610fe1565b5f808787858181106105c1576105c1610fb4565b90506020020160208101906105d69190610ecb565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161057e565b5050505050565b6106413382610b7e565b50565b61064c610b89565b6106568282610ba3565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026106b281610baf565b8382146106eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799575f84848381811061070857610708610fb4565b905060200201602081019061071d9190610fe1565b905080151560010361075f5761075a87878481811061073e5761073e610fb4565b90506020020160208101906107539190610ecb565b6001610ba3565b610790565b61079087878481811061077457610774610fb4565b90506020020160208101906107899190610ecb565b6001610b7e565b506001016106ed565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f25760018160011c14303b106107e95763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108018486018661102d565b9150915061080e82610be0565b5f5b81518110156108935760015f8084848151811061082f5761082f610fb4565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610810565b50505080156108cb576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d8610b89565b6106568282610b7e565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610923610b89565b61092c5f610c28565b565b600261093981610baf565b838214610972576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799576109c486868381811061099157610991610fb4565b90506020020160208101906109a69190610ecb565b8585848181106109b8576109b8610fb4565b90506020020135610ba3565b600101610974565b60026109d781610baf565b838214610a10576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079957610a62868683818110610a2f57610a2f610fb4565b9050602002016020810190610a449190610ecb565b858584818110610a5657610a56610fb4565b90506020020135610b7e565b600101610a12565b610a72610b89565b63389a75e1600c52805f526020600c208054421115610a9857636f5e88185f526004601cfd5b5f905561064181610c28565b610aac610b89565b8060601b610ac157637448fbae5f526004601cfd5b61064181610c28565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aef638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fe5750638b78c6d8600c9081525f839052602090205460031615156104fe565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610c72565b61065682825f610d08565b638b78c6d81954331461092c576382b429005f526004601cfd5b61065682826001610d08565b638b78c6d81954331461064157638b78c6d8600c52335f52806020600c205416610641576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fe57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fe565b638b78c6d8600c52825f526020600c20805483811783610d29575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6f575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9e575f80fd5b9392505050565b5f8083601f840112610db5575f80fd5b50813567ffffffffffffffff811115610dcc575f80fd5b6020830191508360208260051b8501011115610de6575f80fd5b9250929050565b5f805f8060408587031215610e00575f80fd5b843567ffffffffffffffff811115610e16575f80fd5b610e2287828801610da5565b909550935050602085013567ffffffffffffffff811115610e41575f80fd5b610e4d87828801610da5565b95989497509550505050565b5f60208284031215610e69575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610641575f80fd5b8035610e9c81610e70565b919050565b5f8060408385031215610eb2575f80fd5b8235610ebd81610e70565b946020939093013593505050565b5f60208284031215610edb575f80fd5b8135610d9e81610e70565b5f8083601f840112610ef6575f80fd5b50813567ffffffffffffffff811115610f0d575f80fd5b602083019150836020828501011115610de6575f80fd5b5f8060208385031215610f35575f80fd5b823567ffffffffffffffff811115610f4b575f80fd5b610f5785828601610ee6565b90969095509350505050565b5f805f60408486031215610f75575f80fd5b8335610f8081610e70565b9250602084013567ffffffffffffffff811115610f9b575f80fd5b610fa786828701610ee6565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff1575f80fd5b81358015158114610d9e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103e575f80fd5b823561104981610e70565b9150602083013567ffffffffffffffff811115611064575f80fd5b8301601f81018513611074575f80fd5b803567ffffffffffffffff81111561108e5761108e611000565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d9576110d9611000565b6040529182526020818401810192908101888411156110f6575f80fd5b6020850194505b8385101561111c5761110e85610e91565b8152602094850194016110fd565b5080945050505050925092905056fea26469706673582212204d69d936427ed13e47d0a46a2354492a587c169d0bded852cb9b8d6f720204b864736f6c634300081a0033",o1="0x608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610446578063fe9fbb8014610459578063fee81cf414610478575f80fd5b8063e3f756de146103d8578063ec87621c1461041f578063f04e283e14610433575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b806328d6183b11610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b806328d6183b1461023f5780632de94807146102795780634359d28a146102b8575f80fd5b80631c10893f116101615780631c10893f146101ef5780631cd64df4146102025780632569296214610237575f80fd5b806301ffc9a714610187578063141973b0146101bb578063183a4f6e146101dc575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5f565b6104a9565b60405190151581526020015b60405180910390f35b3480156101c6575f80fd5b506101da6101d5366004610ded565b610504565b005b6101da6101ea366004610e59565b610637565b6101da6101fd366004610ea1565b610644565b34801561020d575f80fd5b506101a661021c366004610ea1565b638b78c6d8600c9081525f9290925260209091205481161490565b6101da61065a565b34801561024a575f80fd5b506040517f3d30a22c0000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610284575f80fd5b506102aa610293366004610ecb565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102c3575f80fd5b506101da6102d2366004610ded565b6106a7565b3480156102e2575f80fd5b506101da6102f1366004610f24565b6107a1565b6101da610304366004610ea1565b6108d0565b348015610314575f80fd5b506101a6610323366004610ea1565b638b78c6d8600c9081525f9290925260209091205416151590565b6101da6108e2565b6101da61091b565b348015610359575f80fd5b506102aa600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101da6103b4366004610ded565b61092e565b3480156103c4575f80fd5b506101da6103d3366004610ded565b6109cc565b3480156103e3575f80fd5b506101a66103f2366004610f63565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff161590565b34801561042a575f80fd5b506102aa600181565b6101da610441366004610ecb565b610a6a565b6101da610454366004610ecb565b610aa4565b348015610464575f80fd5b506101a6610473366004610ecb565b610aca565b348015610483575f80fd5b506102aa610492366004610ecb565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f3d30a22c0000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610b29565b92915050565b61050d33610aca565b610543576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82811461057c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156106305782828281811061059857610598610fb4565b90506020020160208101906105ad9190610fe1565b5f808787858181106105c1576105c1610fb4565b90506020020160208101906105d69190610ecb565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161057e565b5050505050565b6106413382610b7e565b50565b61064c610b89565b6106568282610ba3565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026106b281610baf565b8382146106eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799575f84848381811061070857610708610fb4565b905060200201602081019061071d9190610fe1565b905080151560010361075f5761075a87878481811061073e5761073e610fb4565b90506020020160208101906107539190610ecb565b6001610ba3565b610790565b61079087878481811061077457610774610fb4565b90506020020160208101906107899190610ecb565b6001610b7e565b506001016106ed565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f25760018160011c14303b106107e95763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108018486018661102d565b9150915061080e82610be0565b5f5b81518110156108935760015f8084848151811061082f5761082f610fb4565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610810565b50505080156108cb576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d8610b89565b6106568282610b7e565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610923610b89565b61092c5f610c28565b565b600261093981610baf565b838214610972576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799576109c486868381811061099157610991610fb4565b90506020020160208101906109a69190610ecb565b8585848181106109b8576109b8610fb4565b90506020020135610ba3565b600101610974565b60026109d781610baf565b838214610a10576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079957610a62868683818110610a2f57610a2f610fb4565b9050602002016020810190610a449190610ecb565b858584818110610a5657610a56610fb4565b90506020020135610b7e565b600101610a12565b610a72610b89565b63389a75e1600c52805f526020600c208054421115610a9857636f5e88185f526004601cfd5b5f905561064181610c28565b610aac610b89565b8060601b610ac157637448fbae5f526004601cfd5b61064181610c28565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aef638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fe5750638b78c6d8600c9081525f839052602090205460031615156104fe565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610c72565b61065682825f610d08565b638b78c6d81954331461092c576382b429005f526004601cfd5b61065682826001610d08565b638b78c6d81954331461064157638b78c6d8600c52335f52806020600c205416610641576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fe57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fe565b638b78c6d8600c52825f526020600c20805483811783610d29575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6f575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9e575f80fd5b9392505050565b5f8083601f840112610db5575f80fd5b50813567ffffffffffffffff811115610dcc575f80fd5b6020830191508360208260051b8501011115610de6575f80fd5b9250929050565b5f805f8060408587031215610e00575f80fd5b843567ffffffffffffffff811115610e16575f80fd5b610e2287828801610da5565b909550935050602085013567ffffffffffffffff811115610e41575f80fd5b610e4d87828801610da5565b95989497509550505050565b5f60208284031215610e69575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610641575f80fd5b8035610e9c81610e70565b919050565b5f8060408385031215610eb2575f80fd5b8235610ebd81610e70565b946020939093013593505050565b5f60208284031215610edb575f80fd5b8135610d9e81610e70565b5f8083601f840112610ef6575f80fd5b50813567ffffffffffffffff811115610f0d575f80fd5b602083019150836020828501011115610de6575f80fd5b5f8060208385031215610f35575f80fd5b823567ffffffffffffffff811115610f4b575f80fd5b610f5785828601610ee6565b90969095509350505050565b5f805f60408486031215610f75575f80fd5b8335610f8081610e70565b9250602084013567ffffffffffffffff811115610f9b575f80fd5b610fa786828701610ee6565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff1575f80fd5b81358015158114610d9e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103e575f80fd5b823561104981610e70565b9150602083013567ffffffffffffffff811115611064575f80fd5b8301601f81018513611074575f80fd5b803567ffffffffffffffff81111561108e5761108e611000565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d9576110d9611000565b6040529182526020818401810192908101888411156110f6575f80fd5b6020850194505b8385101561111c5761110e85610e91565b8152602094850194016110fd565b5080945050505050925092905056fea26469706673582212204d69d936427ed13e47d0a46a2354492a587c169d0bded852cb9b8d6f720204b864736f6c634300081a0033",u1={},y1={},N0={_format:c1,contractName:i1,sourceName:s1,abi:r1,bytecode:p1,deployedBytecode:o1,linkReferences:u1,deployedLinkReferences:y1},l1="hh-sol-artifact-1",m1="ManagedBudget",T1="contracts/budgets/ManagedBudget.sol",w1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"FnSelectorNotRecognized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",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:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",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:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],h1="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612bba806100895f395ff3fe608060405260043610610252575f3560e01c8063715018a611610137578063ec87621c116100af578063f8724aba1161007e578063fa4ca9b111610063578063fa4ca9b11461076e578063fe9fbb801461078d578063fee81cf4146107ac57610259565b8063f8724aba14610730578063f9a802c31461074f57610259565b8063ec87621c146106b1578063f04e283e146106c5578063f23a6e61146106d8578063f2fde38b1461071d57610259565b8063b300579311610106578063be4994f8116100eb578063be4994f814610654578063d2514e8414610673578063dcc213611461069257610259565b8063b3005793146105c4578063bc197c811461060d57610259565b8063715018a61461052257806375b238fc1461052a578063774c33ab1461053e5780638da5cb5b1461058c57610259565b8063439fab91116101ca578063514e62fc11610199578063578bcf351161017e578063578bcf35146104af5780635aef467a146104f057806361400c991461050357610259565b8063514e62fc1461047257806354d1f13d146104a757610259565b8063439fab9114610400578063451cc1911461041f578063474f5a44146104405780634a4ee7b11461045f57610259565b80631cd64df41161022157806328d6183b1161020657806328d6183b146103515780632de94807146103b05780634359d28a146103e157610259565b80631cd64df414610314578063256929621461034957610259565b806301ffc9a71461028b57806310098ad5146102bf578063183a4f6e146102ec5780631c10893f1461030157610259565b3661025957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610296575f80fd5b506102aa6102a53660046120b8565b6107dd565b60405190151581526020015b60405180910390f35b3480156102ca575f80fd5b506102de6102d9366004612118565b6108d0565b6040519081526020016102b6565b6102ff6102fa366004612133565b610919565b005b6102ff61030f36600461214a565b610926565b34801561031f575f80fd5b506102aa61032e36600461214a565b638b78c6d8600c9081525f9290925260209091205481161490565b6102ff61093c565b34801561035c575f80fd5b507f5fbfaa4e000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016102b6565b3480156103bb575f80fd5b506102de6103ca366004612118565b638b78c6d8600c9081525f91909152602090205490565b3480156103ec575f80fd5b506102ff6103fb3660046121bc565b610989565b34801561040b575f80fd5b506102ff61041a366004612266565b610a83565b34801561042a575f80fd5b506102de610439366004612266565b5f92915050565b34801561044b575f80fd5b506102de61045a366004612266565b610b87565b6102ff61046d36600461214a565b610d4a565b34801561047d575f80fd5b506102aa61048c36600461214a565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ff610d5c565b3480156104ba575f80fd5b506102de6104c9366004612118565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b6102aa6104fe366004612266565b610d95565b34801561050e575f80fd5b506102aa61051d3660046122a5565b6110f5565b6102ff61113c565b348015610535575f80fd5b506102de600281565b348015610549575f80fd5b506102de61055836600461214a565b73ffffffffffffffffffffffffffffffffffffffff919091165f908152600160209081526040808320938352929052205490565b348015610597575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102b6565b3480156105cf575f80fd5b506105e36105de3660046122d8565b61114f565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102b6565b348015610618575f80fd5b5061037f61062736600461233a565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b34801561065f575f80fd5b506102ff61066e3660046121bc565b6112e4565b34801561067e575f80fd5b506102de61068d366004612118565b611382565b34801561069d575f80fd5b506102ff6106ac3660046121bc565b6113ba565b3480156106bc575f80fd5b506102de600181565b6102ff6106d3366004612118565b611458565b3480156106e3575f80fd5b5061037f6106f23660046123fd565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102ff61072b366004612118565b611492565b34801561073b575f80fd5b506102de61074a36600461214a565b6114b8565b34801561075a575f80fd5b506102de61076936600461214a565b611552565b348015610779575f80fd5b506102aa610788366004612266565b611609565b348015610798575f80fd5b506102aa6107a7366004612118565b6118e1565b3480156107b7575f80fd5b506102de6107c6366004612118565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e00000000000000000000000000000000000000000000000000000000148061086f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806108bb57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b806108ca57506108ca82611940565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff8216156109125761090d73ffffffffffffffffffffffffffffffffffffffff831630611995565b6108ca565b4792915050565b61092333826119c8565b50565b61092e6119d3565b61093882826119ed565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610994816119f9565b8382146109cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b575f8484838181106109ea576109ea612474565b90506020020160208101906109ff91906124a1565b9050801515600103610a4157610a3c878784818110610a2057610a20612474565b9050602002016020810190610a359190612118565b60016119ed565b610a72565b610a72878784818110610a5657610a56612474565b9050602002016020810190610a6b9190612118565b60016119c8565b506001016109cf565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610ad45760018160011c14303b10610acb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610ae283850185612615565b9050610af0815f0151611a2a565b5f5b816020015151811015610b4b57610b4382602001518281518110610b1857610b18612474565b602002602001015183604001518381518110610b3657610b36612474565b6020026020010151611a72565b600101610af2565b50508015610b82576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f6002610b93816119f9565b5f610ba084860186612764565b90505f8082516002811115610bb757610bb761284a565b1480610bd55750600182516002811115610bd357610bd361284a565b145b15610c2c575f8260600151806020019051810190610bf39190612877565b602084015160408501518251929350610c249215610c12578351611ab3565b610c1f86602001516108d0565b611ab3565b519050610d3f565b600282516002811115610c4157610c4161284a565b03610d36575f8260600151806020019051810190610c5f91906128b9565b9050610d2b83602001518460400151835f015184602001515f14610c87578460200151610d21565b602087015185516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915273ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa158015610cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d219190612977565b8560400151611c71565b602001519050610d3f565b9250610d439050565b9250505b5092915050565b610d526119d3565b61093882826119c8565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610da383850185612764565b90505f81516002811115610db957610db961284a565b03610e44575f8160600151806020019051810190610dd79190612877565b80519091503414610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b506110eb565b600181516002811115610e5957610e5961284a565b03610f2d575f8160600151806020019051810190610e779190612877565b604083015181516020850151929350610ea99273ffffffffffffffffffffffffffffffffffffffff1691903090611eb3565b80516020830151610ed09073ffffffffffffffffffffffffffffffffffffffff1630611995565b1015610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b600281516002811115610f4257610f4261284a565b036110e2575f8160600151806020019051810190610f6091906128b9565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b8152600401610fb69594939291906129da565b5f604051808303815f87803b158015610fcd575f80fd5b505af1158015610fdf573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915291925073ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa15801561105e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110829190612977565b1015610e3e57602080830151908201516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b5f9150506108ca565b5060019392505050565b5f805b828110156110eb5761112784848381811061111557611115612474565b90506020028101906107889190612a3b565b611134575f9150506108ca565b6001016110f8565b6111446119d3565b61114d5f611f15565b565b5f8061115a336118e1565b611190576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a92909150819073ffffffffffffffffffffffffffffffffffffffff84169063dd98558c90611228908790602001612a9c565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161125793929190612ade565b60408051808303815f875af1158015611272573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112969190612b02565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120805493955091935084926112cf908490612b5e565b90915550919b909a5098505050505050505050565b60026112ef816119f9565b838214611328576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761137a86868381811061134757611347612474565b905060200201602081019061135c9190612118565b85858481811061136e5761136e612474565b905060200201356119ed565b60010161132a565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120546113b0836108d0565b6108ca9190612b71565b60026113c5816119f9565b8382146113fe576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761145086868381811061141d5761141d612474565b90506020020160208101906114329190612118565b85858481811061144457611444612474565b905060200201356119c8565b600101611400565b6114606119d3565b63389a75e1600c52805f526020600c20805442111561148657636f5e88185f526004601cfd5b5f905561092381611f15565b61149a6119d3565b8060601b6114af57637448fbae5f526004601cfd5b61092381611f15565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f9073ffffffffffffffffffffffffffffffffffffffff84169062fdd58e90604401602060405180830381865afa158015611527573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154b9190612977565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82165f8181526001602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa1580156115db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ff9190612977565b61154b9190612b71565b5f611613336118e1565b611649576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61165683850185612764565b905060018151600281111561166d5761166d61284a565b148061168a57505f815160028111156116885761168861284a565b145b15611780575f81606001518060200190518101906116a89190612877565b90505f6116b883602001516108d0565b905080825f0151111561172357602083015182516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b815160208085015173ffffffffffffffffffffffffffffffffffffffff165f9081529081905260408120805490919061175d908490612b71565b9091555050602083015160408401518351611779929190611ab3565b50506110eb565b6002815160028111156117955761179561284a565b036110e2575f81606001518060200190518101906117b391906128b9565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f9173ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa15801561182e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118529190612977565b905080826020015111156118c157602080840151908301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b61177983602001518460400151845f015185602001518660400151611c71565b5f8173ffffffffffffffffffffffffffffffffffffffff16611906638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806108ca5750638b78c6d8600c9081525f839052602090205460031615156108ca565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806108ca57506108ca82611f5f565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61093882825f611ff5565b638b78c6d81954331461114d576382b429005f526004601cfd5b61093882826001611ff5565b638b78c6d81954331461092357638b78c6d8600c52335f52806020600c205416610923576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611ad15763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8216611b51576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610e35565b611b5a836108d0565b811115611bc25782611b6b846108d0565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff8316611bec57611be7828261204c565b611c0d565b611c0d73ffffffffffffffffffffffffffffffffffffffff84168383612065565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403611c8f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8416611d0f576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301528516602482015260448101839052606401610e35565b611d1985846114b8565b821115611d825784611d2b86856114b8565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101839052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020908152604080832086845290915281208054849290611dc1908490612b71565b90915550506040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063f242432a90611e2090309088908890889088906004016129da565b5f604051808303815f87803b158015611e37575f80fd5b505af1158015611e49573d5f803e3d5ffd5b50506040805173ffffffffffffffffffffffffffffffffffffffff888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f511416611f0757803d873b151710611f0757637939f4245f526004601cfd5b505f60605260405250505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806108ca57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146108ca565b638b78c6d8600c52825f526020600c20805483811783612016575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109385763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f5114166120ae57803d853b1517106120ae576390b8ec185f526004601cfd5b505f603452505050565b5f602082840312156120c8575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154b575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610923575f80fd5b5f60208284031215612128575f80fd5b813561154b816120f7565b5f60208284031215612143575f80fd5b5035919050565b5f806040838503121561215b575f80fd5b8235612166816120f7565b946020939093013593505050565b5f8083601f840112612184575f80fd5b50813567ffffffffffffffff81111561219b575f80fd5b6020830191508360208260051b85010111156121b5575f80fd5b9250929050565b5f805f80604085870312156121cf575f80fd5b843567ffffffffffffffff8111156121e5575f80fd5b6121f187828801612174565b909550935050602085013567ffffffffffffffff811115612210575f80fd5b61221c87828801612174565b95989497509550505050565b5f8083601f840112612238575f80fd5b50813567ffffffffffffffff81111561224f575f80fd5b6020830191508360208285010111156121b5575f80fd5b5f8060208385031215612277575f80fd5b823567ffffffffffffffff81111561228d575f80fd5b61229985828601612228565b90969095509350505050565b5f80602083850312156122b6575f80fd5b823567ffffffffffffffff8111156122cc575f80fd5b61229985828601612174565b5f805f805f608086880312156122ec575f80fd5b85356122f7816120f7565b9450602086013567ffffffffffffffff811115612312575f80fd5b61231e88828901612228565b9699909850959660408101359660609091013595509350505050565b5f805f805f805f8060a0898b031215612351575f80fd5b883561235c816120f7565b9750602089013561236c816120f7565b9650604089013567ffffffffffffffff811115612387575f80fd5b6123938b828c01612174565b909750955050606089013567ffffffffffffffff8111156123b2575f80fd5b6123be8b828c01612174565b909550935050608089013567ffffffffffffffff8111156123dd575f80fd5b6123e98b828c01612228565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612412575f80fd5b863561241d816120f7565b9550602087013561242d816120f7565b94506040870135935060608701359250608087013567ffffffffffffffff811115612456575f80fd5b61246289828a01612228565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156124b1575f80fd5b8135801515811461154b575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715612510576125106124c0565b60405290565b6040516080810167ffffffffffffffff81118282101715612510576125106124c0565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612580576125806124c0565b604052919050565b5f67ffffffffffffffff8211156125a1576125a16124c0565b5060051b60200190565b5f82601f8301126125ba575f80fd5b81356125cd6125c882612588565b612539565b8082825260208201915060208360051b8601019250858311156125ee575f80fd5b602085015b8381101561260b5780358352602092830192016125f3565b5095945050505050565b5f60208284031215612625575f80fd5b813567ffffffffffffffff81111561263b575f80fd5b82016060818503121561264c575f80fd5b6126546124ed565b813561265f816120f7565b8152602082013567ffffffffffffffff81111561267a575f80fd5b8201601f8101861361268a575f80fd5b80356126986125c882612588565b8082825260208201915060208360051b8501019250888311156126b9575f80fd5b6020840193505b828410156126e45783356126d3816120f7565b8252602093840193909101906126c0565b6020850152505050604082013567ffffffffffffffff811115612705575f80fd5b612711868285016125ab565b604083015250949350505050565b5f67ffffffffffffffff821115612738576127386124c0565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f60208284031215612774575f80fd5b813567ffffffffffffffff81111561278a575f80fd5b82016080818503121561279b575f80fd5b6127a3612516565b8135600381106127b1575f80fd5b815260208201356127c1816120f7565b602082015260408201356127d4816120f7565b6040820152606082013567ffffffffffffffff8111156127f2575f80fd5b80830192505084601f830112612806575f80fd5b81356128146125c88261271f565b818152866020838601011115612828575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015612888575f80fd5b506040516020810167ffffffffffffffff811182821017156128ac576128ac6124c0565b6040529151825250919050565b5f602082840312156128c9575f80fd5b815167ffffffffffffffff8111156128df575f80fd5b8201606081850312156128f0575f80fd5b6128f86124ed565b8151815260208083015190820152604082015167ffffffffffffffff81111561291f575f80fd5b80830192505084601f830112612933575f80fd5b81516129416125c88261271f565b818152866020838601011115612955575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f60208284031215612987575f80fd5b5051919050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f612a3060a083018461298e565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612a6e575f80fd5b83018035915067ffffffffffffffff821115612a88575f80fd5b6020019150368190038213156121b5575f80fd5b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612ad6606084018261298e565b949350505050565b606081525f612af0606083018661298e565b60208301949094525060400152919050565b5f8060408385031215612b13575f80fd5b82516020840151909250612b26816120f7565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156108ca576108ca612b31565b808201808211156108ca576108ca612b3156fea264697066735822122046c94008e6e9f40d780be9afd13f29f60c7d13d80bc5bdd187b40201a133d17164736f6c634300081a0033",v1="0x608060405260043610610252575f3560e01c8063715018a611610137578063ec87621c116100af578063f8724aba1161007e578063fa4ca9b111610063578063fa4ca9b11461076e578063fe9fbb801461078d578063fee81cf4146107ac57610259565b8063f8724aba14610730578063f9a802c31461074f57610259565b8063ec87621c146106b1578063f04e283e146106c5578063f23a6e61146106d8578063f2fde38b1461071d57610259565b8063b300579311610106578063be4994f8116100eb578063be4994f814610654578063d2514e8414610673578063dcc213611461069257610259565b8063b3005793146105c4578063bc197c811461060d57610259565b8063715018a61461052257806375b238fc1461052a578063774c33ab1461053e5780638da5cb5b1461058c57610259565b8063439fab91116101ca578063514e62fc11610199578063578bcf351161017e578063578bcf35146104af5780635aef467a146104f057806361400c991461050357610259565b8063514e62fc1461047257806354d1f13d146104a757610259565b8063439fab9114610400578063451cc1911461041f578063474f5a44146104405780634a4ee7b11461045f57610259565b80631cd64df41161022157806328d6183b1161020657806328d6183b146103515780632de94807146103b05780634359d28a146103e157610259565b80631cd64df414610314578063256929621461034957610259565b806301ffc9a71461028b57806310098ad5146102bf578063183a4f6e146102ec5780631c10893f1461030157610259565b3661025957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610296575f80fd5b506102aa6102a53660046120b8565b6107dd565b60405190151581526020015b60405180910390f35b3480156102ca575f80fd5b506102de6102d9366004612118565b6108d0565b6040519081526020016102b6565b6102ff6102fa366004612133565b610919565b005b6102ff61030f36600461214a565b610926565b34801561031f575f80fd5b506102aa61032e36600461214a565b638b78c6d8600c9081525f9290925260209091205481161490565b6102ff61093c565b34801561035c575f80fd5b507f5fbfaa4e000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016102b6565b3480156103bb575f80fd5b506102de6103ca366004612118565b638b78c6d8600c9081525f91909152602090205490565b3480156103ec575f80fd5b506102ff6103fb3660046121bc565b610989565b34801561040b575f80fd5b506102ff61041a366004612266565b610a83565b34801561042a575f80fd5b506102de610439366004612266565b5f92915050565b34801561044b575f80fd5b506102de61045a366004612266565b610b87565b6102ff61046d36600461214a565b610d4a565b34801561047d575f80fd5b506102aa61048c36600461214a565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ff610d5c565b3480156104ba575f80fd5b506102de6104c9366004612118565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b6102aa6104fe366004612266565b610d95565b34801561050e575f80fd5b506102aa61051d3660046122a5565b6110f5565b6102ff61113c565b348015610535575f80fd5b506102de600281565b348015610549575f80fd5b506102de61055836600461214a565b73ffffffffffffffffffffffffffffffffffffffff919091165f908152600160209081526040808320938352929052205490565b348015610597575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102b6565b3480156105cf575f80fd5b506105e36105de3660046122d8565b61114f565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102b6565b348015610618575f80fd5b5061037f61062736600461233a565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b34801561065f575f80fd5b506102ff61066e3660046121bc565b6112e4565b34801561067e575f80fd5b506102de61068d366004612118565b611382565b34801561069d575f80fd5b506102ff6106ac3660046121bc565b6113ba565b3480156106bc575f80fd5b506102de600181565b6102ff6106d3366004612118565b611458565b3480156106e3575f80fd5b5061037f6106f23660046123fd565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102ff61072b366004612118565b611492565b34801561073b575f80fd5b506102de61074a36600461214a565b6114b8565b34801561075a575f80fd5b506102de61076936600461214a565b611552565b348015610779575f80fd5b506102aa610788366004612266565b611609565b348015610798575f80fd5b506102aa6107a7366004612118565b6118e1565b3480156107b7575f80fd5b506102de6107c6366004612118565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e00000000000000000000000000000000000000000000000000000000148061086f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806108bb57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b806108ca57506108ca82611940565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff8216156109125761090d73ffffffffffffffffffffffffffffffffffffffff831630611995565b6108ca565b4792915050565b61092333826119c8565b50565b61092e6119d3565b61093882826119ed565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610994816119f9565b8382146109cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b575f8484838181106109ea576109ea612474565b90506020020160208101906109ff91906124a1565b9050801515600103610a4157610a3c878784818110610a2057610a20612474565b9050602002016020810190610a359190612118565b60016119ed565b610a72565b610a72878784818110610a5657610a56612474565b9050602002016020810190610a6b9190612118565b60016119c8565b506001016109cf565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610ad45760018160011c14303b10610acb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610ae283850185612615565b9050610af0815f0151611a2a565b5f5b816020015151811015610b4b57610b4382602001518281518110610b1857610b18612474565b602002602001015183604001518381518110610b3657610b36612474565b6020026020010151611a72565b600101610af2565b50508015610b82576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f6002610b93816119f9565b5f610ba084860186612764565b90505f8082516002811115610bb757610bb761284a565b1480610bd55750600182516002811115610bd357610bd361284a565b145b15610c2c575f8260600151806020019051810190610bf39190612877565b602084015160408501518251929350610c249215610c12578351611ab3565b610c1f86602001516108d0565b611ab3565b519050610d3f565b600282516002811115610c4157610c4161284a565b03610d36575f8260600151806020019051810190610c5f91906128b9565b9050610d2b83602001518460400151835f015184602001515f14610c87578460200151610d21565b602087015185516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915273ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa158015610cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d219190612977565b8560400151611c71565b602001519050610d3f565b9250610d439050565b9250505b5092915050565b610d526119d3565b61093882826119c8565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610da383850185612764565b90505f81516002811115610db957610db961284a565b03610e44575f8160600151806020019051810190610dd79190612877565b80519091503414610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b506110eb565b600181516002811115610e5957610e5961284a565b03610f2d575f8160600151806020019051810190610e779190612877565b604083015181516020850151929350610ea99273ffffffffffffffffffffffffffffffffffffffff1691903090611eb3565b80516020830151610ed09073ffffffffffffffffffffffffffffffffffffffff1630611995565b1015610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b600281516002811115610f4257610f4261284a565b036110e2575f8160600151806020019051810190610f6091906128b9565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b8152600401610fb69594939291906129da565b5f604051808303815f87803b158015610fcd575f80fd5b505af1158015610fdf573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915291925073ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa15801561105e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110829190612977565b1015610e3e57602080830151908201516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b5f9150506108ca565b5060019392505050565b5f805b828110156110eb5761112784848381811061111557611115612474565b90506020028101906107889190612a3b565b611134575f9150506108ca565b6001016110f8565b6111446119d3565b61114d5f611f15565b565b5f8061115a336118e1565b611190576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a92909150819073ffffffffffffffffffffffffffffffffffffffff84169063dd98558c90611228908790602001612a9c565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161125793929190612ade565b60408051808303815f875af1158015611272573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112969190612b02565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120805493955091935084926112cf908490612b5e565b90915550919b909a5098505050505050505050565b60026112ef816119f9565b838214611328576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761137a86868381811061134757611347612474565b905060200201602081019061135c9190612118565b85858481811061136e5761136e612474565b905060200201356119ed565b60010161132a565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120546113b0836108d0565b6108ca9190612b71565b60026113c5816119f9565b8382146113fe576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761145086868381811061141d5761141d612474565b90506020020160208101906114329190612118565b85858481811061144457611444612474565b905060200201356119c8565b600101611400565b6114606119d3565b63389a75e1600c52805f526020600c20805442111561148657636f5e88185f526004601cfd5b5f905561092381611f15565b61149a6119d3565b8060601b6114af57637448fbae5f526004601cfd5b61092381611f15565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f9073ffffffffffffffffffffffffffffffffffffffff84169062fdd58e90604401602060405180830381865afa158015611527573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154b9190612977565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82165f8181526001602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa1580156115db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ff9190612977565b61154b9190612b71565b5f611613336118e1565b611649576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61165683850185612764565b905060018151600281111561166d5761166d61284a565b148061168a57505f815160028111156116885761168861284a565b145b15611780575f81606001518060200190518101906116a89190612877565b90505f6116b883602001516108d0565b905080825f0151111561172357602083015182516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b815160208085015173ffffffffffffffffffffffffffffffffffffffff165f9081529081905260408120805490919061175d908490612b71565b9091555050602083015160408401518351611779929190611ab3565b50506110eb565b6002815160028111156117955761179561284a565b036110e2575f81606001518060200190518101906117b391906128b9565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f9173ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa15801561182e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118529190612977565b905080826020015111156118c157602080840151908301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b61177983602001518460400151845f015185602001518660400151611c71565b5f8173ffffffffffffffffffffffffffffffffffffffff16611906638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806108ca5750638b78c6d8600c9081525f839052602090205460031615156108ca565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806108ca57506108ca82611f5f565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61093882825f611ff5565b638b78c6d81954331461114d576382b429005f526004601cfd5b61093882826001611ff5565b638b78c6d81954331461092357638b78c6d8600c52335f52806020600c205416610923576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611ad15763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8216611b51576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610e35565b611b5a836108d0565b811115611bc25782611b6b846108d0565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff8316611bec57611be7828261204c565b611c0d565b611c0d73ffffffffffffffffffffffffffffffffffffffff84168383612065565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403611c8f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8416611d0f576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301528516602482015260448101839052606401610e35565b611d1985846114b8565b821115611d825784611d2b86856114b8565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101839052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020908152604080832086845290915281208054849290611dc1908490612b71565b90915550506040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063f242432a90611e2090309088908890889088906004016129da565b5f604051808303815f87803b158015611e37575f80fd5b505af1158015611e49573d5f803e3d5ffd5b50506040805173ffffffffffffffffffffffffffffffffffffffff888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f511416611f0757803d873b151710611f0757637939f4245f526004601cfd5b505f60605260405250505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806108ca57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146108ca565b638b78c6d8600c52825f526020600c20805483811783612016575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109385763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f5114166120ae57803d853b1517106120ae576390b8ec185f526004601cfd5b505f603452505050565b5f602082840312156120c8575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154b575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610923575f80fd5b5f60208284031215612128575f80fd5b813561154b816120f7565b5f60208284031215612143575f80fd5b5035919050565b5f806040838503121561215b575f80fd5b8235612166816120f7565b946020939093013593505050565b5f8083601f840112612184575f80fd5b50813567ffffffffffffffff81111561219b575f80fd5b6020830191508360208260051b85010111156121b5575f80fd5b9250929050565b5f805f80604085870312156121cf575f80fd5b843567ffffffffffffffff8111156121e5575f80fd5b6121f187828801612174565b909550935050602085013567ffffffffffffffff811115612210575f80fd5b61221c87828801612174565b95989497509550505050565b5f8083601f840112612238575f80fd5b50813567ffffffffffffffff81111561224f575f80fd5b6020830191508360208285010111156121b5575f80fd5b5f8060208385031215612277575f80fd5b823567ffffffffffffffff81111561228d575f80fd5b61229985828601612228565b90969095509350505050565b5f80602083850312156122b6575f80fd5b823567ffffffffffffffff8111156122cc575f80fd5b61229985828601612174565b5f805f805f608086880312156122ec575f80fd5b85356122f7816120f7565b9450602086013567ffffffffffffffff811115612312575f80fd5b61231e88828901612228565b9699909850959660408101359660609091013595509350505050565b5f805f805f805f8060a0898b031215612351575f80fd5b883561235c816120f7565b9750602089013561236c816120f7565b9650604089013567ffffffffffffffff811115612387575f80fd5b6123938b828c01612174565b909750955050606089013567ffffffffffffffff8111156123b2575f80fd5b6123be8b828c01612174565b909550935050608089013567ffffffffffffffff8111156123dd575f80fd5b6123e98b828c01612228565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612412575f80fd5b863561241d816120f7565b9550602087013561242d816120f7565b94506040870135935060608701359250608087013567ffffffffffffffff811115612456575f80fd5b61246289828a01612228565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156124b1575f80fd5b8135801515811461154b575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715612510576125106124c0565b60405290565b6040516080810167ffffffffffffffff81118282101715612510576125106124c0565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612580576125806124c0565b604052919050565b5f67ffffffffffffffff8211156125a1576125a16124c0565b5060051b60200190565b5f82601f8301126125ba575f80fd5b81356125cd6125c882612588565b612539565b8082825260208201915060208360051b8601019250858311156125ee575f80fd5b602085015b8381101561260b5780358352602092830192016125f3565b5095945050505050565b5f60208284031215612625575f80fd5b813567ffffffffffffffff81111561263b575f80fd5b82016060818503121561264c575f80fd5b6126546124ed565b813561265f816120f7565b8152602082013567ffffffffffffffff81111561267a575f80fd5b8201601f8101861361268a575f80fd5b80356126986125c882612588565b8082825260208201915060208360051b8501019250888311156126b9575f80fd5b6020840193505b828410156126e45783356126d3816120f7565b8252602093840193909101906126c0565b6020850152505050604082013567ffffffffffffffff811115612705575f80fd5b612711868285016125ab565b604083015250949350505050565b5f67ffffffffffffffff821115612738576127386124c0565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f60208284031215612774575f80fd5b813567ffffffffffffffff81111561278a575f80fd5b82016080818503121561279b575f80fd5b6127a3612516565b8135600381106127b1575f80fd5b815260208201356127c1816120f7565b602082015260408201356127d4816120f7565b6040820152606082013567ffffffffffffffff8111156127f2575f80fd5b80830192505084601f830112612806575f80fd5b81356128146125c88261271f565b818152866020838601011115612828575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015612888575f80fd5b506040516020810167ffffffffffffffff811182821017156128ac576128ac6124c0565b6040529151825250919050565b5f602082840312156128c9575f80fd5b815167ffffffffffffffff8111156128df575f80fd5b8201606081850312156128f0575f80fd5b6128f86124ed565b8151815260208083015190820152604082015167ffffffffffffffff81111561291f575f80fd5b80830192505084601f830112612933575f80fd5b81516129416125c88261271f565b818152866020838601011115612955575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f60208284031215612987575f80fd5b5051919050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f612a3060a083018461298e565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612a6e575f80fd5b83018035915067ffffffffffffffff821115612a88575f80fd5b6020019150368190038213156121b5575f80fd5b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612ad6606084018261298e565b949350505050565b606081525f612af0606083018661298e565b60208301949094525060400152919050565b5f8060408385031215612b13575f80fd5b82516020840151909250612b26816120f7565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156108ca576108ca612b31565b808201808211156108ca576108ca612b3156fea264697066735822122046c94008e6e9f40d780be9afd13f29f60c7d13d80bc5bdd187b40201a133d17164736f6c634300081a0033",g1={},M1={},P0={_format:l1,contractName:m1,sourceName:T1,abi:w1,bytecode:h1,deployedBytecode:v1,linkReferences:g1,deployedLinkReferences:M1},I1="hh-sol-artifact-1",x1="ManagedBudgetWithFees",A1="contracts/budgets/ManagedBudgetWithFees.sol",E1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"FnSelectorNotRecognized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"ZeroBalancePayout",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"questId",type:"uint256"},{indexed:!0,internalType:"uint256",name:"incentiveId",type:"uint256"},{indexed:!0,internalType:"address",name:"manager",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ManagementFeePaid",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newFee",type:"uint256"}],name:"ManagementFeeSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTargetAndPayFee",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"asset",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"incentiveFeesDisbursed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"incentiveFeesMax",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"managementFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",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:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"payManagementFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"reservedFunds",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"fee_",type:"uint256"}],name:"setManagementFee",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:[{internalType:"address",name:"target",type:"address"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"topupIncentive",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],R1="0x6080604052348015600e575f80fd5b506015601f565b601b601f565b6082565b63409feecd1980546001811615603c5763f92ee8a95f526004601cfd5b6001600160401b03808260011c14607d578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6137ad8061008f5f395ff3fe6080604052600436106102ea575f3560e01c806375b238fc11610183578063dcc21361116100d5578063f8724aba11610089578063fe56e23211610063578063fe56e232146108e4578063fe9fbb8014610903578063fee81cf414610922576102f1565b8063f8724aba14610887578063f9a802c3146108a6578063fa4ca9b1146108c5576102f1565b8063f04e283e116100ba578063f04e283e1461081c578063f23a6e611461082f578063f2fde38b14610874576102f1565b8063dcc21361146107e9578063ec87621c14610808576102f1565b8063b300579311610137578063c6004a3a11610111578063c6004a3a14610774578063d2514e841461079f578063d8c12d22146107be576102f1565b8063b3005793146106ef578063bc197c811461070e578063be4994f814610755576102f1565b80638da5cb5b116101685780638da5cb5b14610690578063929470eb146106bb578063a6f7f5d6146106da576102f1565b806375b238fc1461063b578063774c33ab1461064f576102f1565b8063439fab911161023c578063514e62fc116101f05780635aef467a116101ca5780635aef467a1461060157806361400c9914610614578063715018a614610633576102f1565b8063514e62fc1461059057806354d1f13d146105c5578063578bcf35146105cd576102f1565b8063451cc19111610221578063451cc1911461053d578063474f5a441461055e5780634a4ee7b11461057d576102f1565b8063439fab91146104ff57806343cc96e11461051e576102f1565b80631c10893f1161029e57806328d6183b1161027857806328d6183b146104505780632de94807146104af5780634359d28a146104e0576102f1565b80631c10893f146104005780631cd64df4146104135780632569296214610448576102f1565b806314135ce0116102cf57806314135ce014610384578063183a4f6e146103af578063185832a3146103c4576102f1565b806301ffc9a71461032357806310098ad514610357576102f1565b366102f157005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561032e575f80fd5b5061034261033d3660046129c8565b610953565b60405190151581526020015b60405180910390f35b348015610362575f80fd5b50610376610371366004612a1b565b610963565b60405190815260200161034e565b34801561038f575f80fd5b5061037661039e366004612a1b565b60046020525f908152604090205481565b6103c26103bd366004612a36565b61098e565b005b3480156103cf575f80fd5b506103e36103de366004612a92565b61099b565b604080519283526001600160a01b0390911660208301520161034e565b6103c261040e366004612af4565b6109c3565b34801561041e575f80fd5b5061034261042d366004612af4565b638b78c6d8600c9081525f9290925260209091205481161490565b6103c26109d9565b34801561045b575f80fd5b507fde98bbf0000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161034e565b3480156104ba575f80fd5b506103766104c9366004612a1b565b638b78c6d8600c9081525f91909152602090205490565b3480156104eb575f80fd5b506103c26104fa366004612b5f565b610a26565b34801561050a575f80fd5b506103c2610519366004612bcb565b610b20565b348015610529575f80fd5b506103c2610538366004612c0a565b610d2a565b348015610548575f80fd5b50610376610557366004612bcb565b5f92915050565b348015610569575f80fd5b50610376610578366004612bcb565b6110b3565b6103c261058b366004612af4565b611269565b34801561059b575f80fd5b506103426105aa366004612af4565b638b78c6d8600c9081525f9290925260209091205416151590565b6103c261127b565b3480156105d8575f80fd5b506103766105e7366004612a1b565b6001600160a01b03165f9081526005602052604090205490565b61034261060f366004612bcb565b6112b4565b34801561061f575f80fd5b5061034261062e366004612c2a565b6115b4565b6103c26115fb565b348015610646575f80fd5b50610376600281565b34801561065a575f80fd5b50610376610669366004612af4565b6001600160a01b03919091165f908152600660209081526040808320938352929052205490565b34801561069b575f80fd5b50638b78c6d819546040516001600160a01b03909116815260200161034e565b3480156106c6575f80fd5b506103426106d5366004612c5d565b61160e565b3480156106e5575f80fd5b5061037660015481565b3480156106fa575f80fd5b506103e3610709366004612a92565b6116d4565b348015610719575f80fd5b5061047e610728366004612cc2565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610760575f80fd5b506103c261076f366004612b5f565b611842565b34801561077f575f80fd5b5061037661078e366004612a1b565b60036020525f908152604090205481565b3480156107aa575f80fd5b506103766107b9366004612a1b565b6118e0565b3480156107c9575f80fd5b506103766107d8366004612a1b565b60026020525f908152604090205481565b3480156107f4575f80fd5b506103c2610803366004612b5f565b611920565b348015610813575f80fd5b50610376600181565b6103c261082a366004612a1b565b6119be565b34801561083a575f80fd5b5061047e610849366004612d85565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6103c2610882366004612a1b565b6119f8565b348015610892575f80fd5b506103766108a1366004612af4565b611a1e565b3480156108b1575f80fd5b506103766108c0366004612af4565b611aab565b3480156108d0575f80fd5b506103426108df366004612bcb565b611b55565b3480156108ef575f80fd5b506103c26108fe366004612a36565b611e9d565b34801561090e575f80fd5b5061034261091d366004612a1b565b611f50565b34801561092d575f80fd5b5061037661093c366004612a1b565b63389a75e1600c9081525f91909152602090205490565b5f61095d82611f95565b92915050565b6001600160a01b0381165f9081526004602052604081205461098483611fea565b61095d9190612e29565b6109983382612019565b50565b5f806109aa87878787876116d4565b90925090506109b98484610d2a565b9550959350505050565b6109cb612024565b6109d5828261203e565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610a318161204a565b838214610a6a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18575f848483818110610a8757610a87612e3c565b9050602002016020810190610a9c9190612e76565b9050801515600103610ade57610ad9878784818110610abd57610abd612e3c565b9050602002016020810190610ad29190612a1b565b600161203e565b610b0f565b610b0f878784818110610af357610af3612e3c565b9050602002016020810190610b089190612a1b565b6001612019565b50600101610a6c565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610b715760018160011c14303b10610b685763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610b7f8385018561300a565b9050610b8d815f015161207b565b5f5b816020015151811015610be857610be082602001518281518110610bb557610bb5612e3c565b602002602001015183604001518381518110610bd357610bd3612e3c565b60200260200101516120b6565b600101610b8f565b508060200151515f03610c5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6e6f20636f726520636f6e74726163742073657400000000000000000000000060448201526064015b60405180910390fd5b80602001515f81518110610c7257610c72612e3c565b6020908102919091018101515f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055606082015160018190556040519081527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd0978910160405180910390a1508015610d25576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80546040517f13c8e2de000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b03909116906313c8e2de906024015f60405180830381865afa158015610d89573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610dce91908101906131ab565b90505f81608001518381518110610de757610de7612e3c565b60209081029190910101516040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f7cc1d5bb0000000000000000000000000000000000000000000000000000000060048201529091506001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610e70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e949190613288565b15610f6e575f816001600160a01b031663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb91906132a3565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610f3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5f91906132a3565b9050610b1886868685856120f7565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f903181110000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610fe9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100d9190613288565b156102f1575f816001600160a01b031663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611050573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107491906132a3565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3b573d5f803e3d5ffd5b5f60026110bf8161204a565b5f6110cc848601866132ff565b90505f80825160028111156110e3576110e36133e5565b148061110157506001825160028111156110ff576110ff6133e5565b145b15611158575f826060015180602001905181019061111f9190613412565b602084015160408501518251929350611150921561113e5783516122fc565b61114b8660200151610963565b6122fc565b51905061125e565b60028251600281111561116d5761116d6133e5565b03611255575f826060015180602001905181019061118b9190613454565b905061124a83602001518460400151835f015184602001515f146111b3578460200151611240565b602087015185516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091526001600160a01b039091169062fdd58e90604401602060405180830381865afa15801561121c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061124091906132a3565b856040015161246c565b60200151905061125e565b92506112629050565b9250505b5092915050565b611271612024565b6109d58282612019565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f806112c2838501856132ff565b90505f815160028111156112d8576112d86133e5565b03611351575f81606001518060200190518101906112f69190613412565b8051909150341461134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b506115aa565b600181516002811115611366576113666133e5565b03611413575f81606001518060200190518101906113849190613412565b6040830151815160208501519293506113a9926001600160a01b031691903090612660565b805160208301516113c3906001600160a01b0316306126c2565b101561134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b600281516002811115611428576114286133e5565b036115a1575f81606001518060200190518101906114469190613454565b905081602001516001600160a01b031663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161148f95949392919061355e565b5f604051808303815f87803b1580156114a6575f80fd5b505af11580156114b8573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192506001600160a01b03169062fdd58e90604401602060405180830381865afa15801561152a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154e91906132a3565b101561134b57602080830151908201516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b5f91505061095d565b5060019392505050565b5f805b828110156115aa576115e68484838181106115d4576115d4612e3c565b90506020028101906108df91906135a5565b6115f3575f91505061095d565b6001016115b7565b611603612024565b61160c5f6126f5565b565b5f61161833611f50565b61164e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1fa2acdc0000000000000000000000000000000000000000000000000000000081526001600160a01b03871690631fa2acdc9061169b9088908890889088903090600401613606565b5f604051808303815f87803b1580156116b2575f80fd5b505af11580156116c4573d5f803e3d5ffd5b5060019998505050505050505050565b5f806116df33611f50565b611715576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060400160405280306001600160a01b0316815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a9290915081906001600160a01b0384169063dd98558c90611793908790602001613672565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b81526004016117c2939291906136a7565b60408051808303815f875af11580156117dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180191906136cb565b6001600160a01b0381165f9081526005602052604081208054939550919350849261182d908490612e29565b90915550919b909a5098505050505050505050565b600261184d8161204a565b838214611886576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576118d88686838181106118a5576118a5612e3c565b90506020020160208101906118ba9190612a1b565b8585848181106118cc576118cc612e3c565b9050602002013561203e565b600101611888565b6001600160a01b0381165f90815260046020908152604080832054600590925282205461190c84610963565b61191691906136fa565b61095d91906136fa565b600261192b8161204a565b838214611964576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576119b686868381811061198357611983612e3c565b90506020020160208101906119989190612a1b565b8585848181106119aa576119aa612e3c565b90506020020135612019565b600101611966565b6119c6612024565b63389a75e1600c52805f526020600c2080544211156119ec57636f5e88185f526004601cfd5b5f9055610998816126f5565b611a00612024565b8060601b611a1557637448fbae5f526004601cfd5b610998816126f5565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f906001600160a01b0384169062fdd58e90604401602060405180830381865afa158015611a80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa491906132a3565b9392505050565b6001600160a01b0382165f8181526006602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa158015611b27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b4b91906132a3565b611aa491906136fa565b5f611b5f33611f50565b611b95576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611ba2838501856132ff565b9050600181516002811115611bb957611bb96133e5565b1480611bd657505f81516002811115611bd457611bd46133e5565b145b15611d4f575f8160600151806020019051810190611bf49190613412565b90505f612710600154835f0151611c0b919061370d565b611c159190613724565b90505f611c258460200151610963565b90508082845f0151611c3791906136fa565b1115611c9c57602084015183518290611c519085906136fa565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b03909316600484015260248301919091526044820152606401610c53565b6040808501516001600160a01b03165f90815260026020529081208054849290611cc79084906136fa565b90915550506020808501516001600160a01b03165f9081526004909152604081208054849290611cf89084906136fa565b909155505082516020808601516001600160a01b03165f9081526005909152604081208054909190611d2b9084906136fa565b9091555050602084015160408501518451611d479291906122fc565b5050506115aa565b600281516002811115611d6457611d646133e5565b036115a1575f8160600151806020019051810190611d829190613454565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f916001600160a01b039091169062fdd58e90604401602060405180830381865afa158015611df0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e1491906132a3565b90508082602001511115611e7657602080840151908301516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482018390526044820152606401610c53565b611e9683602001518460400151845f01518560200151866040015161246c565b50506115aa565b6002611ea88161204a565b612710821115611f14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4665652063616e6e6f74206578636565642031303025000000000000000000006044820152606401610c53565b60018290556040518281527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09789060200160405180910390a15050565b5f816001600160a01b0316611f68638b78c6d8195490565b6001600160a01b0316148061095d5750638b78c6d8600c9081525f8390526020902054600316151561095d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fde98bbf000000000000000000000000000000000000000000000000000000000148061095d575061095d82612732565b5f6001600160a01b038216156120125761200d6001600160a01b038316306126c2565b61095d565b4792915050565b6109d582825f61281f565b638b78c6d81954331461160c576382b429005f526004601cfd5b6109d58282600161281f565b638b78c6d81954331461099857638b78c6d8600c52335f52806020600c205416610998576382b429005f526004601cfd5b6001600160a01b0316638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f8360800151858151811061210e5761210e612e3c565b6020908102919091018101516001600160a01b0381165f9081526002835260408082205460039094528120549193508185612149888661370d565b6121539190613724565b61215d9190612e29565b905061216981836136fa565b6001600160a01b0385165f8181526003602090815260408083209490945583517f38d52e0f000000000000000000000000000000000000000000000000000000008152935191936338d52e0f92600480830193928290030181865afa1580156121d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121f8919061375c565b60e08901516001600160a01b0382165f908152600460205260408120805493945091928592919061222a908490612e29565b90915550505f839003612269576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8461227484866136fa565b0361229f576001600160a01b0386165f90815260026020908152604080832083905560039091528120555b806001600160a01b03168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b4866040516122dc91815260200190565b60405180910390a46122ef8282856122fc565b5050505050505050505050565b3068929eee149b4bd21268540361231a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b038216612380576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301528316602482015260448101829052606401610c53565b61238983610963565b8111156123e4578261239a84610963565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610c53565b6001600160a01b038316612401576123fc8282612876565b612415565b6124156001600160a01b038416838361288f565b604080516001600160a01b038481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd21268540361248a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b0384166124f0576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380871660048301528516602482015260448101839052606401610c53565b6124fa8584611a1e565b821115612556578461250c8685611a1e565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101839052606401610c53565b6001600160a01b0385165f908152600660209081526040808320868452909152812080548492906125889084906136fa565b90915550506040517ff242432a0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063f242432a906125da903090889088908890889060040161355e565b5f604051808303815f87803b1580156125f1575f80fd5b505af1158015612603573d5f803e3d5ffd5b5050604080516001600160a01b03888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f5114166126b457803d873b1517106126b457637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e0000000000000000000000000000000000000000000000000000000014806127c457507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061281057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061095d575061095d826128e2565b638b78c6d8600c52825f526020600c20805483811783612840575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109d55763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f5114166128d857803d853b1517106128d8576390b8ec185f526004601cfd5b505f603452505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd700000000000000000000000000000000000000000000000000000000148061095d575061095d825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061095d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461095d565b5f602082840312156129d8575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611aa4575f80fd5b6001600160a01b0381168114610998575f80fd5b5f60208284031215612a2b575f80fd5b8135611aa481612a07565b5f60208284031215612a46575f80fd5b5035919050565b5f8083601f840112612a5d575f80fd5b50813567ffffffffffffffff811115612a74575f80fd5b602083019150836020828501011115612a8b575f80fd5b9250929050565b5f805f805f60808688031215612aa6575f80fd5b8535612ab181612a07565b9450602086013567ffffffffffffffff811115612acc575f80fd5b612ad888828901612a4d565b9699909850959660408101359660609091013595509350505050565b5f8060408385031215612b05575f80fd5b8235612b1081612a07565b946020939093013593505050565b5f8083601f840112612b2e575f80fd5b50813567ffffffffffffffff811115612b45575f80fd5b6020830191508360208260051b8501011115612a8b575f80fd5b5f805f8060408587031215612b72575f80fd5b843567ffffffffffffffff811115612b88575f80fd5b612b9487828801612b1e565b909550935050602085013567ffffffffffffffff811115612bb3575f80fd5b612bbf87828801612b1e565b95989497509550505050565b5f8060208385031215612bdc575f80fd5b823567ffffffffffffffff811115612bf2575f80fd5b612bfe85828601612a4d565b90969095509350505050565b5f8060408385031215612c1b575f80fd5b50508035926020909101359150565b5f8060208385031215612c3b575f80fd5b823567ffffffffffffffff811115612c51575f80fd5b612bfe85828601612b1e565b5f805f805f60808688031215612c71575f80fd5b8535612c7c81612a07565b94506020860135935060408601359250606086013567ffffffffffffffff811115612ca5575f80fd5b612cb188828901612a4d565b969995985093965092949392505050565b5f805f805f805f8060a0898b031215612cd9575f80fd5b8835612ce481612a07565b97506020890135612cf481612a07565b9650604089013567ffffffffffffffff811115612d0f575f80fd5b612d1b8b828c01612b1e565b909750955050606089013567ffffffffffffffff811115612d3a575f80fd5b612d468b828c01612b1e565b909550935050608089013567ffffffffffffffff811115612d65575f80fd5b612d718b828c01612a4d565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612d9a575f80fd5b8635612da581612a07565b95506020870135612db581612a07565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dde575f80fd5b612dea89828a01612a4d565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561095d5761095d612dfc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8015158114610998575f80fd5b5f60208284031215612e86575f80fd5b8135611aa481612e69565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715612ee157612ee1612e91565b60405290565b604051610100810167ffffffffffffffff81118282101715612ee157612ee1612e91565b6040516060810167ffffffffffffffff81118282101715612ee157612ee1612e91565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f7557612f75612e91565b604052919050565b5f67ffffffffffffffff821115612f9657612f96612e91565b5060051b60200190565b5f82601f830112612faf575f80fd5b8135612fc2612fbd82612f7d565b612f2e565b8082825260208201915060208360051b860101925085831115612fe3575f80fd5b602085015b83811015613000578035835260209283019201612fe8565b5095945050505050565b5f6020828403121561301a575f80fd5b813567ffffffffffffffff811115613030575f80fd5b820160808185031215613041575f80fd5b613049612ebe565b813561305481612a07565b8152602082013567ffffffffffffffff81111561306f575f80fd5b8201601f8101861361307f575f80fd5b803561308d612fbd82612f7d565b8082825260208201915060208360051b8501019250888311156130ae575f80fd5b6020840193505b828410156130d95783356130c881612a07565b8252602093840193909101906130b5565b6020850152505050604082013567ffffffffffffffff8111156130fa575f80fd5b61310686828501612fa0565b604083015250606091820135918101919091529392505050565b805161312b81612a07565b919050565b5f82601f83011261313f575f80fd5b815161314d612fbd82612f7d565b8082825260208201915060208360051b86010192508583111561316e575f80fd5b602085015b8381101561300057805161318681612a07565b835260209283019201613173565b805167ffffffffffffffff8116811461312b575f80fd5b5f602082840312156131bb575f80fd5b815167ffffffffffffffff8111156131d1575f80fd5b820161010081850312156131e3575f80fd5b6131eb612ee7565b6131f482613120565b815261320260208301613120565b602082015261321360408301613120565b604082015261322460608301613120565b6060820152608082015167ffffffffffffffff811115613242575f80fd5b61324e86828501613130565b60808301525061326060a08301613194565b60a082015260c0828101519082015261327b60e08301613120565b60e0820152949350505050565b5f60208284031215613298575f80fd5b8151611aa481612e69565b5f602082840312156132b3575f80fd5b5051919050565b5f67ffffffffffffffff8211156132d3576132d3612e91565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f6020828403121561330f575f80fd5b813567ffffffffffffffff811115613325575f80fd5b820160808185031215613336575f80fd5b61333e612ebe565b81356003811061334c575f80fd5b8152602082013561335c81612a07565b6020820152604082013561336f81612a07565b6040820152606082013567ffffffffffffffff81111561338d575f80fd5b80830192505084601f8301126133a1575f80fd5b81356133af612fbd826132ba565b8181528660208386010111156133c3575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015613423575f80fd5b506040516020810167ffffffffffffffff8111828210171561344757613447612e91565b6040529151825250919050565b5f60208284031215613464575f80fd5b815167ffffffffffffffff81111561347a575f80fd5b82016060818503121561348b575f80fd5b613493612f0b565b8151815260208083015190820152604082015167ffffffffffffffff8111156134ba575f80fd5b80830192505084601f8301126134ce575f80fd5b81516134dc612fbd826132ba565b8181528660208386010111156134f0575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015282606082015260a060808201525f61359a60a0830184613512565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135d8575f80fd5b83018035915067ffffffffffffffff8211156135f2575f80fd5b602001915036819003821315612a8b575f80fd5b85815284602082015260806040820152826080820152828460a08301375f60a084830101525f60a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011683010190506001600160a01b03831660608301529695505050505050565b602081526001600160a01b0382511660208201525f602083015160408084015261369f6060840182613512565b949350505050565b606081525f6136b96060830186613512565b60208301949094525060400152919050565b5f80604083850312156136dc575f80fd5b825160208401519092506136ef81612a07565b809150509250929050565b8082018082111561095d5761095d612dfc565b808202811582820484141761095d5761095d612dfc565b5f82613757577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f6020828403121561376c575f80fd5b8151611aa481612a0756fea2646970667358221220c4aa3b17b934a3a01b24f3191818b2b0b291f2e616fab5fe7ff6da61ab9593d264736f6c634300081a0033",O1="0x6080604052600436106102ea575f3560e01c806375b238fc11610183578063dcc21361116100d5578063f8724aba11610089578063fe56e23211610063578063fe56e232146108e4578063fe9fbb8014610903578063fee81cf414610922576102f1565b8063f8724aba14610887578063f9a802c3146108a6578063fa4ca9b1146108c5576102f1565b8063f04e283e116100ba578063f04e283e1461081c578063f23a6e611461082f578063f2fde38b14610874576102f1565b8063dcc21361146107e9578063ec87621c14610808576102f1565b8063b300579311610137578063c6004a3a11610111578063c6004a3a14610774578063d2514e841461079f578063d8c12d22146107be576102f1565b8063b3005793146106ef578063bc197c811461070e578063be4994f814610755576102f1565b80638da5cb5b116101685780638da5cb5b14610690578063929470eb146106bb578063a6f7f5d6146106da576102f1565b806375b238fc1461063b578063774c33ab1461064f576102f1565b8063439fab911161023c578063514e62fc116101f05780635aef467a116101ca5780635aef467a1461060157806361400c9914610614578063715018a614610633576102f1565b8063514e62fc1461059057806354d1f13d146105c5578063578bcf35146105cd576102f1565b8063451cc19111610221578063451cc1911461053d578063474f5a441461055e5780634a4ee7b11461057d576102f1565b8063439fab91146104ff57806343cc96e11461051e576102f1565b80631c10893f1161029e57806328d6183b1161027857806328d6183b146104505780632de94807146104af5780634359d28a146104e0576102f1565b80631c10893f146104005780631cd64df4146104135780632569296214610448576102f1565b806314135ce0116102cf57806314135ce014610384578063183a4f6e146103af578063185832a3146103c4576102f1565b806301ffc9a71461032357806310098ad514610357576102f1565b366102f157005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561032e575f80fd5b5061034261033d3660046129c8565b610953565b60405190151581526020015b60405180910390f35b348015610362575f80fd5b50610376610371366004612a1b565b610963565b60405190815260200161034e565b34801561038f575f80fd5b5061037661039e366004612a1b565b60046020525f908152604090205481565b6103c26103bd366004612a36565b61098e565b005b3480156103cf575f80fd5b506103e36103de366004612a92565b61099b565b604080519283526001600160a01b0390911660208301520161034e565b6103c261040e366004612af4565b6109c3565b34801561041e575f80fd5b5061034261042d366004612af4565b638b78c6d8600c9081525f9290925260209091205481161490565b6103c26109d9565b34801561045b575f80fd5b507fde98bbf0000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161034e565b3480156104ba575f80fd5b506103766104c9366004612a1b565b638b78c6d8600c9081525f91909152602090205490565b3480156104eb575f80fd5b506103c26104fa366004612b5f565b610a26565b34801561050a575f80fd5b506103c2610519366004612bcb565b610b20565b348015610529575f80fd5b506103c2610538366004612c0a565b610d2a565b348015610548575f80fd5b50610376610557366004612bcb565b5f92915050565b348015610569575f80fd5b50610376610578366004612bcb565b6110b3565b6103c261058b366004612af4565b611269565b34801561059b575f80fd5b506103426105aa366004612af4565b638b78c6d8600c9081525f9290925260209091205416151590565b6103c261127b565b3480156105d8575f80fd5b506103766105e7366004612a1b565b6001600160a01b03165f9081526005602052604090205490565b61034261060f366004612bcb565b6112b4565b34801561061f575f80fd5b5061034261062e366004612c2a565b6115b4565b6103c26115fb565b348015610646575f80fd5b50610376600281565b34801561065a575f80fd5b50610376610669366004612af4565b6001600160a01b03919091165f908152600660209081526040808320938352929052205490565b34801561069b575f80fd5b50638b78c6d819546040516001600160a01b03909116815260200161034e565b3480156106c6575f80fd5b506103426106d5366004612c5d565b61160e565b3480156106e5575f80fd5b5061037660015481565b3480156106fa575f80fd5b506103e3610709366004612a92565b6116d4565b348015610719575f80fd5b5061047e610728366004612cc2565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610760575f80fd5b506103c261076f366004612b5f565b611842565b34801561077f575f80fd5b5061037661078e366004612a1b565b60036020525f908152604090205481565b3480156107aa575f80fd5b506103766107b9366004612a1b565b6118e0565b3480156107c9575f80fd5b506103766107d8366004612a1b565b60026020525f908152604090205481565b3480156107f4575f80fd5b506103c2610803366004612b5f565b611920565b348015610813575f80fd5b50610376600181565b6103c261082a366004612a1b565b6119be565b34801561083a575f80fd5b5061047e610849366004612d85565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6103c2610882366004612a1b565b6119f8565b348015610892575f80fd5b506103766108a1366004612af4565b611a1e565b3480156108b1575f80fd5b506103766108c0366004612af4565b611aab565b3480156108d0575f80fd5b506103426108df366004612bcb565b611b55565b3480156108ef575f80fd5b506103c26108fe366004612a36565b611e9d565b34801561090e575f80fd5b5061034261091d366004612a1b565b611f50565b34801561092d575f80fd5b5061037661093c366004612a1b565b63389a75e1600c9081525f91909152602090205490565b5f61095d82611f95565b92915050565b6001600160a01b0381165f9081526004602052604081205461098483611fea565b61095d9190612e29565b6109983382612019565b50565b5f806109aa87878787876116d4565b90925090506109b98484610d2a565b9550959350505050565b6109cb612024565b6109d5828261203e565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610a318161204a565b838214610a6a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18575f848483818110610a8757610a87612e3c565b9050602002016020810190610a9c9190612e76565b9050801515600103610ade57610ad9878784818110610abd57610abd612e3c565b9050602002016020810190610ad29190612a1b565b600161203e565b610b0f565b610b0f878784818110610af357610af3612e3c565b9050602002016020810190610b089190612a1b565b6001612019565b50600101610a6c565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610b715760018160011c14303b10610b685763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610b7f8385018561300a565b9050610b8d815f015161207b565b5f5b816020015151811015610be857610be082602001518281518110610bb557610bb5612e3c565b602002602001015183604001518381518110610bd357610bd3612e3c565b60200260200101516120b6565b600101610b8f565b508060200151515f03610c5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6e6f20636f726520636f6e74726163742073657400000000000000000000000060448201526064015b60405180910390fd5b80602001515f81518110610c7257610c72612e3c565b6020908102919091018101515f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055606082015160018190556040519081527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd0978910160405180910390a1508015610d25576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80546040517f13c8e2de000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b03909116906313c8e2de906024015f60405180830381865afa158015610d89573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610dce91908101906131ab565b90505f81608001518381518110610de757610de7612e3c565b60209081029190910101516040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f7cc1d5bb0000000000000000000000000000000000000000000000000000000060048201529091506001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610e70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e949190613288565b15610f6e575f816001600160a01b031663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb91906132a3565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610f3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5f91906132a3565b9050610b1886868685856120f7565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f903181110000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610fe9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100d9190613288565b156102f1575f816001600160a01b031663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611050573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107491906132a3565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3b573d5f803e3d5ffd5b5f60026110bf8161204a565b5f6110cc848601866132ff565b90505f80825160028111156110e3576110e36133e5565b148061110157506001825160028111156110ff576110ff6133e5565b145b15611158575f826060015180602001905181019061111f9190613412565b602084015160408501518251929350611150921561113e5783516122fc565b61114b8660200151610963565b6122fc565b51905061125e565b60028251600281111561116d5761116d6133e5565b03611255575f826060015180602001905181019061118b9190613454565b905061124a83602001518460400151835f015184602001515f146111b3578460200151611240565b602087015185516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091526001600160a01b039091169062fdd58e90604401602060405180830381865afa15801561121c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061124091906132a3565b856040015161246c565b60200151905061125e565b92506112629050565b9250505b5092915050565b611271612024565b6109d58282612019565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f806112c2838501856132ff565b90505f815160028111156112d8576112d86133e5565b03611351575f81606001518060200190518101906112f69190613412565b8051909150341461134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b506115aa565b600181516002811115611366576113666133e5565b03611413575f81606001518060200190518101906113849190613412565b6040830151815160208501519293506113a9926001600160a01b031691903090612660565b805160208301516113c3906001600160a01b0316306126c2565b101561134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b600281516002811115611428576114286133e5565b036115a1575f81606001518060200190518101906114469190613454565b905081602001516001600160a01b031663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161148f95949392919061355e565b5f604051808303815f87803b1580156114a6575f80fd5b505af11580156114b8573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192506001600160a01b03169062fdd58e90604401602060405180830381865afa15801561152a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154e91906132a3565b101561134b57602080830151908201516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b5f91505061095d565b5060019392505050565b5f805b828110156115aa576115e68484838181106115d4576115d4612e3c565b90506020028101906108df91906135a5565b6115f3575f91505061095d565b6001016115b7565b611603612024565b61160c5f6126f5565b565b5f61161833611f50565b61164e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1fa2acdc0000000000000000000000000000000000000000000000000000000081526001600160a01b03871690631fa2acdc9061169b9088908890889088903090600401613606565b5f604051808303815f87803b1580156116b2575f80fd5b505af11580156116c4573d5f803e3d5ffd5b5060019998505050505050505050565b5f806116df33611f50565b611715576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060400160405280306001600160a01b0316815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a9290915081906001600160a01b0384169063dd98558c90611793908790602001613672565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b81526004016117c2939291906136a7565b60408051808303815f875af11580156117dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180191906136cb565b6001600160a01b0381165f9081526005602052604081208054939550919350849261182d908490612e29565b90915550919b909a5098505050505050505050565b600261184d8161204a565b838214611886576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576118d88686838181106118a5576118a5612e3c565b90506020020160208101906118ba9190612a1b565b8585848181106118cc576118cc612e3c565b9050602002013561203e565b600101611888565b6001600160a01b0381165f90815260046020908152604080832054600590925282205461190c84610963565b61191691906136fa565b61095d91906136fa565b600261192b8161204a565b838214611964576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576119b686868381811061198357611983612e3c565b90506020020160208101906119989190612a1b565b8585848181106119aa576119aa612e3c565b90506020020135612019565b600101611966565b6119c6612024565b63389a75e1600c52805f526020600c2080544211156119ec57636f5e88185f526004601cfd5b5f9055610998816126f5565b611a00612024565b8060601b611a1557637448fbae5f526004601cfd5b610998816126f5565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f906001600160a01b0384169062fdd58e90604401602060405180830381865afa158015611a80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa491906132a3565b9392505050565b6001600160a01b0382165f8181526006602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa158015611b27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b4b91906132a3565b611aa491906136fa565b5f611b5f33611f50565b611b95576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611ba2838501856132ff565b9050600181516002811115611bb957611bb96133e5565b1480611bd657505f81516002811115611bd457611bd46133e5565b145b15611d4f575f8160600151806020019051810190611bf49190613412565b90505f612710600154835f0151611c0b919061370d565b611c159190613724565b90505f611c258460200151610963565b90508082845f0151611c3791906136fa565b1115611c9c57602084015183518290611c519085906136fa565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b03909316600484015260248301919091526044820152606401610c53565b6040808501516001600160a01b03165f90815260026020529081208054849290611cc79084906136fa565b90915550506020808501516001600160a01b03165f9081526004909152604081208054849290611cf89084906136fa565b909155505082516020808601516001600160a01b03165f9081526005909152604081208054909190611d2b9084906136fa565b9091555050602084015160408501518451611d479291906122fc565b5050506115aa565b600281516002811115611d6457611d646133e5565b036115a1575f8160600151806020019051810190611d829190613454565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f916001600160a01b039091169062fdd58e90604401602060405180830381865afa158015611df0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e1491906132a3565b90508082602001511115611e7657602080840151908301516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482018390526044820152606401610c53565b611e9683602001518460400151845f01518560200151866040015161246c565b50506115aa565b6002611ea88161204a565b612710821115611f14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4665652063616e6e6f74206578636565642031303025000000000000000000006044820152606401610c53565b60018290556040518281527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09789060200160405180910390a15050565b5f816001600160a01b0316611f68638b78c6d8195490565b6001600160a01b0316148061095d5750638b78c6d8600c9081525f8390526020902054600316151561095d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fde98bbf000000000000000000000000000000000000000000000000000000000148061095d575061095d82612732565b5f6001600160a01b038216156120125761200d6001600160a01b038316306126c2565b61095d565b4792915050565b6109d582825f61281f565b638b78c6d81954331461160c576382b429005f526004601cfd5b6109d58282600161281f565b638b78c6d81954331461099857638b78c6d8600c52335f52806020600c205416610998576382b429005f526004601cfd5b6001600160a01b0316638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f8360800151858151811061210e5761210e612e3c565b6020908102919091018101516001600160a01b0381165f9081526002835260408082205460039094528120549193508185612149888661370d565b6121539190613724565b61215d9190612e29565b905061216981836136fa565b6001600160a01b0385165f8181526003602090815260408083209490945583517f38d52e0f000000000000000000000000000000000000000000000000000000008152935191936338d52e0f92600480830193928290030181865afa1580156121d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121f8919061375c565b60e08901516001600160a01b0382165f908152600460205260408120805493945091928592919061222a908490612e29565b90915550505f839003612269576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8461227484866136fa565b0361229f576001600160a01b0386165f90815260026020908152604080832083905560039091528120555b806001600160a01b03168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b4866040516122dc91815260200190565b60405180910390a46122ef8282856122fc565b5050505050505050505050565b3068929eee149b4bd21268540361231a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b038216612380576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301528316602482015260448101829052606401610c53565b61238983610963565b8111156123e4578261239a84610963565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610c53565b6001600160a01b038316612401576123fc8282612876565b612415565b6124156001600160a01b038416838361288f565b604080516001600160a01b038481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd21268540361248a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b0384166124f0576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380871660048301528516602482015260448101839052606401610c53565b6124fa8584611a1e565b821115612556578461250c8685611a1e565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101839052606401610c53565b6001600160a01b0385165f908152600660209081526040808320868452909152812080548492906125889084906136fa565b90915550506040517ff242432a0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063f242432a906125da903090889088908890889060040161355e565b5f604051808303815f87803b1580156125f1575f80fd5b505af1158015612603573d5f803e3d5ffd5b5050604080516001600160a01b03888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f5114166126b457803d873b1517106126b457637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e0000000000000000000000000000000000000000000000000000000014806127c457507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061281057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061095d575061095d826128e2565b638b78c6d8600c52825f526020600c20805483811783612840575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109d55763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f5114166128d857803d853b1517106128d8576390b8ec185f526004601cfd5b505f603452505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd700000000000000000000000000000000000000000000000000000000148061095d575061095d825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061095d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461095d565b5f602082840312156129d8575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611aa4575f80fd5b6001600160a01b0381168114610998575f80fd5b5f60208284031215612a2b575f80fd5b8135611aa481612a07565b5f60208284031215612a46575f80fd5b5035919050565b5f8083601f840112612a5d575f80fd5b50813567ffffffffffffffff811115612a74575f80fd5b602083019150836020828501011115612a8b575f80fd5b9250929050565b5f805f805f60808688031215612aa6575f80fd5b8535612ab181612a07565b9450602086013567ffffffffffffffff811115612acc575f80fd5b612ad888828901612a4d565b9699909850959660408101359660609091013595509350505050565b5f8060408385031215612b05575f80fd5b8235612b1081612a07565b946020939093013593505050565b5f8083601f840112612b2e575f80fd5b50813567ffffffffffffffff811115612b45575f80fd5b6020830191508360208260051b8501011115612a8b575f80fd5b5f805f8060408587031215612b72575f80fd5b843567ffffffffffffffff811115612b88575f80fd5b612b9487828801612b1e565b909550935050602085013567ffffffffffffffff811115612bb3575f80fd5b612bbf87828801612b1e565b95989497509550505050565b5f8060208385031215612bdc575f80fd5b823567ffffffffffffffff811115612bf2575f80fd5b612bfe85828601612a4d565b90969095509350505050565b5f8060408385031215612c1b575f80fd5b50508035926020909101359150565b5f8060208385031215612c3b575f80fd5b823567ffffffffffffffff811115612c51575f80fd5b612bfe85828601612b1e565b5f805f805f60808688031215612c71575f80fd5b8535612c7c81612a07565b94506020860135935060408601359250606086013567ffffffffffffffff811115612ca5575f80fd5b612cb188828901612a4d565b969995985093965092949392505050565b5f805f805f805f8060a0898b031215612cd9575f80fd5b8835612ce481612a07565b97506020890135612cf481612a07565b9650604089013567ffffffffffffffff811115612d0f575f80fd5b612d1b8b828c01612b1e565b909750955050606089013567ffffffffffffffff811115612d3a575f80fd5b612d468b828c01612b1e565b909550935050608089013567ffffffffffffffff811115612d65575f80fd5b612d718b828c01612a4d565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612d9a575f80fd5b8635612da581612a07565b95506020870135612db581612a07565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dde575f80fd5b612dea89828a01612a4d565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561095d5761095d612dfc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8015158114610998575f80fd5b5f60208284031215612e86575f80fd5b8135611aa481612e69565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715612ee157612ee1612e91565b60405290565b604051610100810167ffffffffffffffff81118282101715612ee157612ee1612e91565b6040516060810167ffffffffffffffff81118282101715612ee157612ee1612e91565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f7557612f75612e91565b604052919050565b5f67ffffffffffffffff821115612f9657612f96612e91565b5060051b60200190565b5f82601f830112612faf575f80fd5b8135612fc2612fbd82612f7d565b612f2e565b8082825260208201915060208360051b860101925085831115612fe3575f80fd5b602085015b83811015613000578035835260209283019201612fe8565b5095945050505050565b5f6020828403121561301a575f80fd5b813567ffffffffffffffff811115613030575f80fd5b820160808185031215613041575f80fd5b613049612ebe565b813561305481612a07565b8152602082013567ffffffffffffffff81111561306f575f80fd5b8201601f8101861361307f575f80fd5b803561308d612fbd82612f7d565b8082825260208201915060208360051b8501019250888311156130ae575f80fd5b6020840193505b828410156130d95783356130c881612a07565b8252602093840193909101906130b5565b6020850152505050604082013567ffffffffffffffff8111156130fa575f80fd5b61310686828501612fa0565b604083015250606091820135918101919091529392505050565b805161312b81612a07565b919050565b5f82601f83011261313f575f80fd5b815161314d612fbd82612f7d565b8082825260208201915060208360051b86010192508583111561316e575f80fd5b602085015b8381101561300057805161318681612a07565b835260209283019201613173565b805167ffffffffffffffff8116811461312b575f80fd5b5f602082840312156131bb575f80fd5b815167ffffffffffffffff8111156131d1575f80fd5b820161010081850312156131e3575f80fd5b6131eb612ee7565b6131f482613120565b815261320260208301613120565b602082015261321360408301613120565b604082015261322460608301613120565b6060820152608082015167ffffffffffffffff811115613242575f80fd5b61324e86828501613130565b60808301525061326060a08301613194565b60a082015260c0828101519082015261327b60e08301613120565b60e0820152949350505050565b5f60208284031215613298575f80fd5b8151611aa481612e69565b5f602082840312156132b3575f80fd5b5051919050565b5f67ffffffffffffffff8211156132d3576132d3612e91565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f6020828403121561330f575f80fd5b813567ffffffffffffffff811115613325575f80fd5b820160808185031215613336575f80fd5b61333e612ebe565b81356003811061334c575f80fd5b8152602082013561335c81612a07565b6020820152604082013561336f81612a07565b6040820152606082013567ffffffffffffffff81111561338d575f80fd5b80830192505084601f8301126133a1575f80fd5b81356133af612fbd826132ba565b8181528660208386010111156133c3575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015613423575f80fd5b506040516020810167ffffffffffffffff8111828210171561344757613447612e91565b6040529151825250919050565b5f60208284031215613464575f80fd5b815167ffffffffffffffff81111561347a575f80fd5b82016060818503121561348b575f80fd5b613493612f0b565b8151815260208083015190820152604082015167ffffffffffffffff8111156134ba575f80fd5b80830192505084601f8301126134ce575f80fd5b81516134dc612fbd826132ba565b8181528660208386010111156134f0575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015282606082015260a060808201525f61359a60a0830184613512565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135d8575f80fd5b83018035915067ffffffffffffffff8211156135f2575f80fd5b602001915036819003821315612a8b575f80fd5b85815284602082015260806040820152826080820152828460a08301375f60a084830101525f60a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011683010190506001600160a01b03831660608301529695505050505050565b602081526001600160a01b0382511660208201525f602083015160408084015261369f6060840182613512565b949350505050565b606081525f6136b96060830186613512565b60208301949094525060400152919050565b5f80604083850312156136dc575f80fd5b825160208401519092506136ef81612a07565b809150509250929050565b8082018082111561095d5761095d612dfc565b808202811582820484141761095d5761095d612dfc565b5f82613757577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f6020828403121561376c575f80fd5b8151611aa481612a0756fea2646970667358221220c4aa3b17b934a3a01b24f3191818b2b0b291f2e616fab5fe7ff6da61ab9593d264736f6c634300081a0033",C1={},_1={},$0={_format:I1,contractName:x1,sourceName:A1,abi:E1,bytecode:R1,deployedBytecode:O1,linkReferences:C1,deployedLinkReferences:_1},z1="hh-sol-artifact-1",B1="VestingBudget",N1="contracts/budgets/VestingBudget.sol",P1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"FnSelectorNotRecognized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"cliff",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"duration",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[],name:"end",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"start",outputs:[{internalType:"uint64",name:"",type:"uint64"}],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:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],$1="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6121f1806100895f395ff3fe608060405260043610610237575f3560e01c8063578bcf3511610137578063d2514e84116100af578063f04e283e1161007e578063fa4ca9b111610063578063fa4ca9b1146106c0578063fe9fbb80146106df578063fee81cf4146106fe5761023e565b8063f04e283e1461069a578063f2fde38b146106ad5761023e565b8063d2514e8414610634578063dcc2136114610653578063ec87621c14610672578063efbe1c1c146106865761023e565b806375b238fc11610106578063b3005793116100eb578063b3005793146105ad578063be4994f8146105f6578063be9a6555146106155761023e565b806375b238fc146105615780638da5cb5b146105755761023e565b8063578bcf35146104e65780635aef467a1461052757806361400c991461053a578063715018a6146105595761023e565b806328d6183b116101ca578063451cc191116101995780634a4ee7b11161017e5780634a4ee7b114610496578063514e62fc146104a957806354d1f13d146104de5761023e565b8063451cc19114610456578063474f5a44146104775761023e565b806328d6183b146103ad5780632de94807146103e75780634359d28a14610418578063439fab91146104375761023e565b8063183a4f6e11610206578063183a4f6e146103485780631c10893f1461035d5780631cd64df41461037057806325692962146103a55761023e565b806301ffc9a7146102705780630fb5a6b4146102a457806310098ad5146102e857806313d033c0146103155761023e565b3661023e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561027b575f80fd5b5061028f61028a36600461192e565b61072f565b60405190151581526020015b60405180910390f35b3480156102af575f80fd5b505f546102cf9068010000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161029b565b3480156102f3575f80fd5b5061030761030236600461198e565b61078a565b60405190815260200161029b565b348015610320575f80fd5b505f546102cf90700100000000000000000000000000000000900467ffffffffffffffff1681565b61035b6103563660046119a9565b6107c3565b005b61035b61036b3660046119c0565b6107d0565b34801561037b575f80fd5b5061028f61038a3660046119c0565b638b78c6d8600c9081525f9290925260209091205481161490565b61035b6107e6565b3480156103b8575f80fd5b506040517f64683da100000000000000000000000000000000000000000000000000000000815260200161029b565b3480156103f2575f80fd5b5061030761040136600461198e565b638b78c6d8600c9081525f91909152602090205490565b348015610423575f80fd5b5061035b610432366004611a32565b610833565b348015610442575f80fd5b5061035b610451366004611adc565b61092d565b348015610461575f80fd5b50610307610470366004611adc565b5f92915050565b348015610482575f80fd5b50610307610491366004611adc565b610aa9565b61035b6104a43660046119c0565b610b5c565b3480156104b4575f80fd5b5061028f6104c33660046119c0565b638b78c6d8600c9081525f9290925260209091205416151590565b61035b610b6e565b3480156104f1575f80fd5b5061030761050036600461198e565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b61028f610535366004611adc565b610ba7565b348015610545575f80fd5b5061028f610554366004611b1b565b610d52565b61035b610d99565b34801561056c575f80fd5b50610307600281565b348015610580575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029b565b3480156105b8575f80fd5b506105cc6105c7366004611b4e565b610dac565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161029b565b348015610601575f80fd5b5061035b610610366004611a32565b610efb565b348015610620575f80fd5b505f546102cf9067ffffffffffffffff1681565b34801561063f575f80fd5b5061030761064e36600461198e565b610f99565b34801561065e575f80fd5b5061035b61066d366004611a32565b611018565b34801561067d575f80fd5b50610307600181565b348015610691575f80fd5b506103076110b6565b61035b6106a836600461198e565b6110ea565b61035b6106bb36600461198e565b611124565b3480156106cb575f80fd5b5061028f6106da366004611adc565b61114a565b3480156106ea575f80fd5b5061028f6106f936600461198e565b611201565b348015610709575f80fd5b5061030761071836600461198e565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f64683da1000000000000000000000000000000000000000000000000000000001480610784575061078482611260565b92915050565b73ffffffffffffffffffffffffffffffffffffffff81165f908152600160205260408120546107b983426112b5565b6107849190611bdd565b6107cd3382611336565b50565b6107d8611341565b6107e2828261135b565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261083e81611367565b838214610877576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925575f84848381811061089457610894611bf0565b90506020020160208101906108a99190611c1d565b90508015156001036108eb576108e68787848181106108ca576108ca611bf0565b90506020020160208101906108df919061198e565b600161135b565b61091c565b61091c87878481811061090057610900611bf0565b9050602002016020810190610915919061198e565b6001611336565b50600101610879565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561097e5760018160011c14303b106109755763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61098c83850185611d20565b60408101515f80546060840151608085015167ffffffffffffffff908116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909416919095161791909117169190911790558051909150610a2e90611398565b5f5b816020015151811015610a6d57610a6582602001518281518110610a5657610a56611bf0565b602002602001015160016113e0565b600101610a30565b50508015610aa4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f610ab2611341565b5f610abf83850185611e4d565b90505f8082516002811115610ad657610ad6611f70565b1480610af45750600182516002811115610af257610af2611f70565b145b15610b4b575f8260600151806020019051810190610b129190611f9d565b805190915015610b23578051610b30565b610b30836020015161078a565b9150610b458360200151846040015184611421565b50610b54565b91506107849050565b949350505050565b610b64611341565b6107e28282611336565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610bb583850185611e4d565b90505f81516002811115610bcb57610bcb611f70565b03610c56575f8160600151806020019051810190610be99190611f9d565b80519091503414610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b50610d48565b600181516002811115610c6b57610c6b611f70565b03610d3f575f8160600151806020019051810190610c899190611f9d565b604083015181516020850151929350610cbb9273ffffffffffffffffffffffffffffffffffffffff1691903090611618565b80516020830151610ce29073ffffffffffffffffffffffffffffffffffffffff163061167a565b1015610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610c47565b5f915050610784565b5060019392505050565b5f805b82811015610d4857610d84848483818110610d7257610d72611bf0565b90506020028101906106da9190611fdf565b610d91575f915050610784565b600101610d55565b610da1611341565b610daa5f6116ad565b565b5f80610db733611201565b610ded576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505091525060405190915073ffffffffffffffffffffffffffffffffffffffff89169063dd98558c90610e7e90849060200161208c565b60405160208183030381529060405287876040518463ffffffff1660e01b8152600401610ead939291906120c6565b60408051808303815f875af1158015610ec8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eec91906120ea565b92509250509550959350505050565b6002610f0681611367565b838214610f3f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561092557610f91868683818110610f5e57610f5e611bf0565b9050602002016020810190610f73919061198e565b858584818110610f8557610f85611bf0565b9050602002013561135b565b600101610f41565b5f8073ffffffffffffffffffffffffffffffffffffffff831615610fdc57610fd773ffffffffffffffffffffffffffffffffffffffff84163061167a565b610fde565b475b73ffffffffffffffffffffffffffffffffffffffff84165f90815260016020526040902054909150611011908290612119565b9392505050565b600261102381611367565b83821461105c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925576110ae86868381811061107b5761107b611bf0565b9050602002016020810190611090919061198e565b8585848181106110a2576110a2611bf0565b90506020020135611336565b60010161105e565b5f80546110db9067ffffffffffffffff6801000000000000000082048116911661212c565b67ffffffffffffffff16905090565b6110f2611341565b63389a75e1600c52805f526020600c20805442111561111857636f5e88185f526004601cfd5b5f90556107cd816116ad565b61112c611341565b8060601b61114157637448fbae5f526004601cfd5b6107cd816116ad565b5f61115433611201565b61118a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61119783850185611e4d565b90506001815160028111156111ae576111ae611f70565b14806111cb57505f815160028111156111c9576111c9611f70565b145b15610d3f575f81606001518060200190518101906111e99190611f9d565b9050610c5082602001518360400151835f0151611421565b5f8173ffffffffffffffffffffffffffffffffffffffff16611226638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107845750638b78c6d8600c9081525f83905260209020546003161515610784565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806107845750610784826116f7565b5f8073ffffffffffffffffffffffffffffffffffffffff8416156112f8576112f373ffffffffffffffffffffffffffffffffffffffff85163061167a565b6112fa565b475b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020526040902054909150610b54906113309083612119565b8461178d565b6107e282825f61186b565b638b78c6d819543314610daa576382b429005f526004601cfd5b6107e28282600161186b565b638b78c6d8195433146107cd57638b78c6d8600c52335f52806020600c2054166107cd576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361143f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff82166114bf576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610c47565b6114c88361078a565b81111561153057826114d98461078a565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610c47565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208054839290611564908490612119565b909155505073ffffffffffffffffffffffffffffffffffffffff83166115935761158e82826118c2565b6115b4565b6115b473ffffffffffffffffffffffffffffffffffffffff841683836118db565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f51141661166c57803d873b15171061166c57637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061078457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610784565b5f80546117ba9067ffffffffffffffff70010000000000000000000000000000000082048116911661212c565b67ffffffffffffffff168267ffffffffffffffff1610156117dc57505f610784565b5f546118009067ffffffffffffffff6801000000000000000082048116911661212c565b67ffffffffffffffff168267ffffffffffffffff1610611821575081610784565b5f5467ffffffffffffffff68010000000000000000820481169161184691168461214c565b61185a9067ffffffffffffffff168561216c565b6118649190612183565b9050610784565b638b78c6d8600c52825f526020600c2080548381178361188c575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16107e25763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f51141661192457803d853b151710611924576390b8ec185f526004601cfd5b505f603452505050565b5f6020828403121561193e575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611011575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146107cd575f80fd5b5f6020828403121561199e575f80fd5b81356110118161196d565b5f602082840312156119b9575f80fd5b5035919050565b5f80604083850312156119d1575f80fd5b82356119dc8161196d565b946020939093013593505050565b5f8083601f8401126119fa575f80fd5b50813567ffffffffffffffff811115611a11575f80fd5b6020830191508360208260051b8501011115611a2b575f80fd5b9250929050565b5f805f8060408587031215611a45575f80fd5b843567ffffffffffffffff811115611a5b575f80fd5b611a67878288016119ea565b909550935050602085013567ffffffffffffffff811115611a86575f80fd5b611a92878288016119ea565b95989497509550505050565b5f8083601f840112611aae575f80fd5b50813567ffffffffffffffff811115611ac5575f80fd5b602083019150836020828501011115611a2b575f80fd5b5f8060208385031215611aed575f80fd5b823567ffffffffffffffff811115611b03575f80fd5b611b0f85828601611a9e565b90969095509350505050565b5f8060208385031215611b2c575f80fd5b823567ffffffffffffffff811115611b42575f80fd5b611b0f858286016119ea565b5f805f805f60808688031215611b62575f80fd5b8535611b6d8161196d565b9450602086013567ffffffffffffffff811115611b88575f80fd5b611b9488828901611a9e565b9699909850959660408101359660609091013595509350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561078457610784611bb0565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611c2d575f80fd5b81358015158114611011575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611c8c57611c8c611c3c565b60405290565b6040516080810167ffffffffffffffff81118282101715611c8c57611c8c611c3c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cfc57611cfc611c3c565b604052919050565b803567ffffffffffffffff81168114611d1b575f80fd5b919050565b5f60208284031215611d30575f80fd5b813567ffffffffffffffff811115611d46575f80fd5b820160a08185031215611d57575f80fd5b611d5f611c69565b8135611d6a8161196d565b8152602082013567ffffffffffffffff811115611d85575f80fd5b8201601f81018613611d95575f80fd5b803567ffffffffffffffff811115611daf57611daf611c3c565b8060051b611dbf60208201611cb5565b91825260208184018101929081019089841115611dda575f80fd5b6020850194505b83851015611e085784359250611df68361196d565b82825260209485019490910190611de1565b602086015250611e1e9250505060408301611d04565b6040820152611e2f60608301611d04565b6060820152611e4060808301611d04565b6080820152949350505050565b5f60208284031215611e5d575f80fd5b813567ffffffffffffffff811115611e73575f80fd5b820160808185031215611e84575f80fd5b611e8c611c92565b813560038110611e9a575f80fd5b81526020820135611eaa8161196d565b60208201526040820135611ebd8161196d565b6040820152606082013567ffffffffffffffff811115611edb575f80fd5b80830192505084601f830112611eef575f80fd5b813567ffffffffffffffff811115611f0957611f09611c3c565b611f3a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611cb5565b818152866020838601011115611f4e575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015611fae575f80fd5b506040516020810167ffffffffffffffff81118282101715611fd257611fd2611c3c565b6040529151825250919050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612012575f80fd5b83018035915067ffffffffffffffff82111561202c575f80fd5b602001915036819003821315611a2b575f80fd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152610b546060840182612040565b606081525f6120d86060830186612040565b60208301949094525060400152919050565b5f80604083850312156120fb575f80fd5b8251602084015190925061210e8161196d565b809150509250929050565b8082018082111561078457610784611bb0565b67ffffffffffffffff818116838216019081111561078457610784611bb0565b67ffffffffffffffff828116828216039081111561078457610784611bb0565b808202811582820484141761078457610784611bb0565b5f826121b6577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea264697066735822122013777cd76419f5e41789152d7f708a02e0fda23aa695c4acd0da895b8f1ed34664736f6c634300081a0033",L1="0x608060405260043610610237575f3560e01c8063578bcf3511610137578063d2514e84116100af578063f04e283e1161007e578063fa4ca9b111610063578063fa4ca9b1146106c0578063fe9fbb80146106df578063fee81cf4146106fe5761023e565b8063f04e283e1461069a578063f2fde38b146106ad5761023e565b8063d2514e8414610634578063dcc2136114610653578063ec87621c14610672578063efbe1c1c146106865761023e565b806375b238fc11610106578063b3005793116100eb578063b3005793146105ad578063be4994f8146105f6578063be9a6555146106155761023e565b806375b238fc146105615780638da5cb5b146105755761023e565b8063578bcf35146104e65780635aef467a1461052757806361400c991461053a578063715018a6146105595761023e565b806328d6183b116101ca578063451cc191116101995780634a4ee7b11161017e5780634a4ee7b114610496578063514e62fc146104a957806354d1f13d146104de5761023e565b8063451cc19114610456578063474f5a44146104775761023e565b806328d6183b146103ad5780632de94807146103e75780634359d28a14610418578063439fab91146104375761023e565b8063183a4f6e11610206578063183a4f6e146103485780631c10893f1461035d5780631cd64df41461037057806325692962146103a55761023e565b806301ffc9a7146102705780630fb5a6b4146102a457806310098ad5146102e857806313d033c0146103155761023e565b3661023e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561027b575f80fd5b5061028f61028a36600461192e565b61072f565b60405190151581526020015b60405180910390f35b3480156102af575f80fd5b505f546102cf9068010000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161029b565b3480156102f3575f80fd5b5061030761030236600461198e565b61078a565b60405190815260200161029b565b348015610320575f80fd5b505f546102cf90700100000000000000000000000000000000900467ffffffffffffffff1681565b61035b6103563660046119a9565b6107c3565b005b61035b61036b3660046119c0565b6107d0565b34801561037b575f80fd5b5061028f61038a3660046119c0565b638b78c6d8600c9081525f9290925260209091205481161490565b61035b6107e6565b3480156103b8575f80fd5b506040517f64683da100000000000000000000000000000000000000000000000000000000815260200161029b565b3480156103f2575f80fd5b5061030761040136600461198e565b638b78c6d8600c9081525f91909152602090205490565b348015610423575f80fd5b5061035b610432366004611a32565b610833565b348015610442575f80fd5b5061035b610451366004611adc565b61092d565b348015610461575f80fd5b50610307610470366004611adc565b5f92915050565b348015610482575f80fd5b50610307610491366004611adc565b610aa9565b61035b6104a43660046119c0565b610b5c565b3480156104b4575f80fd5b5061028f6104c33660046119c0565b638b78c6d8600c9081525f9290925260209091205416151590565b61035b610b6e565b3480156104f1575f80fd5b5061030761050036600461198e565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b61028f610535366004611adc565b610ba7565b348015610545575f80fd5b5061028f610554366004611b1b565b610d52565b61035b610d99565b34801561056c575f80fd5b50610307600281565b348015610580575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029b565b3480156105b8575f80fd5b506105cc6105c7366004611b4e565b610dac565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161029b565b348015610601575f80fd5b5061035b610610366004611a32565b610efb565b348015610620575f80fd5b505f546102cf9067ffffffffffffffff1681565b34801561063f575f80fd5b5061030761064e36600461198e565b610f99565b34801561065e575f80fd5b5061035b61066d366004611a32565b611018565b34801561067d575f80fd5b50610307600181565b348015610691575f80fd5b506103076110b6565b61035b6106a836600461198e565b6110ea565b61035b6106bb36600461198e565b611124565b3480156106cb575f80fd5b5061028f6106da366004611adc565b61114a565b3480156106ea575f80fd5b5061028f6106f936600461198e565b611201565b348015610709575f80fd5b5061030761071836600461198e565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f64683da1000000000000000000000000000000000000000000000000000000001480610784575061078482611260565b92915050565b73ffffffffffffffffffffffffffffffffffffffff81165f908152600160205260408120546107b983426112b5565b6107849190611bdd565b6107cd3382611336565b50565b6107d8611341565b6107e2828261135b565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261083e81611367565b838214610877576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925575f84848381811061089457610894611bf0565b90506020020160208101906108a99190611c1d565b90508015156001036108eb576108e68787848181106108ca576108ca611bf0565b90506020020160208101906108df919061198e565b600161135b565b61091c565b61091c87878481811061090057610900611bf0565b9050602002016020810190610915919061198e565b6001611336565b50600101610879565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561097e5760018160011c14303b106109755763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61098c83850185611d20565b60408101515f80546060840151608085015167ffffffffffffffff908116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909416919095161791909117169190911790558051909150610a2e90611398565b5f5b816020015151811015610a6d57610a6582602001518281518110610a5657610a56611bf0565b602002602001015160016113e0565b600101610a30565b50508015610aa4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f610ab2611341565b5f610abf83850185611e4d565b90505f8082516002811115610ad657610ad6611f70565b1480610af45750600182516002811115610af257610af2611f70565b145b15610b4b575f8260600151806020019051810190610b129190611f9d565b805190915015610b23578051610b30565b610b30836020015161078a565b9150610b458360200151846040015184611421565b50610b54565b91506107849050565b949350505050565b610b64611341565b6107e28282611336565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610bb583850185611e4d565b90505f81516002811115610bcb57610bcb611f70565b03610c56575f8160600151806020019051810190610be99190611f9d565b80519091503414610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b50610d48565b600181516002811115610c6b57610c6b611f70565b03610d3f575f8160600151806020019051810190610c899190611f9d565b604083015181516020850151929350610cbb9273ffffffffffffffffffffffffffffffffffffffff1691903090611618565b80516020830151610ce29073ffffffffffffffffffffffffffffffffffffffff163061167a565b1015610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610c47565b5f915050610784565b5060019392505050565b5f805b82811015610d4857610d84848483818110610d7257610d72611bf0565b90506020028101906106da9190611fdf565b610d91575f915050610784565b600101610d55565b610da1611341565b610daa5f6116ad565b565b5f80610db733611201565b610ded576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505091525060405190915073ffffffffffffffffffffffffffffffffffffffff89169063dd98558c90610e7e90849060200161208c565b60405160208183030381529060405287876040518463ffffffff1660e01b8152600401610ead939291906120c6565b60408051808303815f875af1158015610ec8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eec91906120ea565b92509250509550959350505050565b6002610f0681611367565b838214610f3f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561092557610f91868683818110610f5e57610f5e611bf0565b9050602002016020810190610f73919061198e565b858584818110610f8557610f85611bf0565b9050602002013561135b565b600101610f41565b5f8073ffffffffffffffffffffffffffffffffffffffff831615610fdc57610fd773ffffffffffffffffffffffffffffffffffffffff84163061167a565b610fde565b475b73ffffffffffffffffffffffffffffffffffffffff84165f90815260016020526040902054909150611011908290612119565b9392505050565b600261102381611367565b83821461105c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925576110ae86868381811061107b5761107b611bf0565b9050602002016020810190611090919061198e565b8585848181106110a2576110a2611bf0565b90506020020135611336565b60010161105e565b5f80546110db9067ffffffffffffffff6801000000000000000082048116911661212c565b67ffffffffffffffff16905090565b6110f2611341565b63389a75e1600c52805f526020600c20805442111561111857636f5e88185f526004601cfd5b5f90556107cd816116ad565b61112c611341565b8060601b61114157637448fbae5f526004601cfd5b6107cd816116ad565b5f61115433611201565b61118a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61119783850185611e4d565b90506001815160028111156111ae576111ae611f70565b14806111cb57505f815160028111156111c9576111c9611f70565b145b15610d3f575f81606001518060200190518101906111e99190611f9d565b9050610c5082602001518360400151835f0151611421565b5f8173ffffffffffffffffffffffffffffffffffffffff16611226638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107845750638b78c6d8600c9081525f83905260209020546003161515610784565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806107845750610784826116f7565b5f8073ffffffffffffffffffffffffffffffffffffffff8416156112f8576112f373ffffffffffffffffffffffffffffffffffffffff85163061167a565b6112fa565b475b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020526040902054909150610b54906113309083612119565b8461178d565b6107e282825f61186b565b638b78c6d819543314610daa576382b429005f526004601cfd5b6107e28282600161186b565b638b78c6d8195433146107cd57638b78c6d8600c52335f52806020600c2054166107cd576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361143f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff82166114bf576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610c47565b6114c88361078a565b81111561153057826114d98461078a565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610c47565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208054839290611564908490612119565b909155505073ffffffffffffffffffffffffffffffffffffffff83166115935761158e82826118c2565b6115b4565b6115b473ffffffffffffffffffffffffffffffffffffffff841683836118db565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f51141661166c57803d873b15171061166c57637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061078457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610784565b5f80546117ba9067ffffffffffffffff70010000000000000000000000000000000082048116911661212c565b67ffffffffffffffff168267ffffffffffffffff1610156117dc57505f610784565b5f546118009067ffffffffffffffff6801000000000000000082048116911661212c565b67ffffffffffffffff168267ffffffffffffffff1610611821575081610784565b5f5467ffffffffffffffff68010000000000000000820481169161184691168461214c565b61185a9067ffffffffffffffff168561216c565b6118649190612183565b9050610784565b638b78c6d8600c52825f526020600c2080548381178361188c575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16107e25763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f51141661192457803d853b151710611924576390b8ec185f526004601cfd5b505f603452505050565b5f6020828403121561193e575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611011575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146107cd575f80fd5b5f6020828403121561199e575f80fd5b81356110118161196d565b5f602082840312156119b9575f80fd5b5035919050565b5f80604083850312156119d1575f80fd5b82356119dc8161196d565b946020939093013593505050565b5f8083601f8401126119fa575f80fd5b50813567ffffffffffffffff811115611a11575f80fd5b6020830191508360208260051b8501011115611a2b575f80fd5b9250929050565b5f805f8060408587031215611a45575f80fd5b843567ffffffffffffffff811115611a5b575f80fd5b611a67878288016119ea565b909550935050602085013567ffffffffffffffff811115611a86575f80fd5b611a92878288016119ea565b95989497509550505050565b5f8083601f840112611aae575f80fd5b50813567ffffffffffffffff811115611ac5575f80fd5b602083019150836020828501011115611a2b575f80fd5b5f8060208385031215611aed575f80fd5b823567ffffffffffffffff811115611b03575f80fd5b611b0f85828601611a9e565b90969095509350505050565b5f8060208385031215611b2c575f80fd5b823567ffffffffffffffff811115611b42575f80fd5b611b0f858286016119ea565b5f805f805f60808688031215611b62575f80fd5b8535611b6d8161196d565b9450602086013567ffffffffffffffff811115611b88575f80fd5b611b9488828901611a9e565b9699909850959660408101359660609091013595509350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561078457610784611bb0565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611c2d575f80fd5b81358015158114611011575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611c8c57611c8c611c3c565b60405290565b6040516080810167ffffffffffffffff81118282101715611c8c57611c8c611c3c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cfc57611cfc611c3c565b604052919050565b803567ffffffffffffffff81168114611d1b575f80fd5b919050565b5f60208284031215611d30575f80fd5b813567ffffffffffffffff811115611d46575f80fd5b820160a08185031215611d57575f80fd5b611d5f611c69565b8135611d6a8161196d565b8152602082013567ffffffffffffffff811115611d85575f80fd5b8201601f81018613611d95575f80fd5b803567ffffffffffffffff811115611daf57611daf611c3c565b8060051b611dbf60208201611cb5565b91825260208184018101929081019089841115611dda575f80fd5b6020850194505b83851015611e085784359250611df68361196d565b82825260209485019490910190611de1565b602086015250611e1e9250505060408301611d04565b6040820152611e2f60608301611d04565b6060820152611e4060808301611d04565b6080820152949350505050565b5f60208284031215611e5d575f80fd5b813567ffffffffffffffff811115611e73575f80fd5b820160808185031215611e84575f80fd5b611e8c611c92565b813560038110611e9a575f80fd5b81526020820135611eaa8161196d565b60208201526040820135611ebd8161196d565b6040820152606082013567ffffffffffffffff811115611edb575f80fd5b80830192505084601f830112611eef575f80fd5b813567ffffffffffffffff811115611f0957611f09611c3c565b611f3a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611cb5565b818152866020838601011115611f4e575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015611fae575f80fd5b506040516020810167ffffffffffffffff81118282101715611fd257611fd2611c3c565b6040529151825250919050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612012575f80fd5b83018035915067ffffffffffffffff82111561202c575f80fd5b602001915036819003821315611a2b575f80fd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152610b546060840182612040565b606081525f6120d86060830186612040565b60208301949094525060400152919050565b5f80604083850312156120fb575f80fd5b8251602084015190925061210e8161196d565b809150509250929050565b8082018082111561078457610784611bb0565b67ffffffffffffffff818116838216019081111561078457610784611bb0565b67ffffffffffffffff828116828216039081111561078457610784611bb0565b808202811582820484141761078457610784611bb0565b5f826121b6577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea264697066735822122013777cd76419f5e41789152d7f708a02e0fda23aa695c4acd0da895b8f1ed34664736f6c634300081a0033",H1={},F1={},L0={_format:z1,contractName:B1,sourceName:N1,abi:P1,bytecode:$1,deployedBytecode:L1,linkReferences:H1,deployedLinkReferences:F1},k1="hh-sol-artifact-1",S1="AllowListIncentive",D1="contracts/incentives/AllowListIncentive.sol",G1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{inputs:[],name:"allowList",outputs:[{internalType:"contract SimpleAllowList",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"pure",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],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:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],V1="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b610f75806100895f395ff3fe608060405260043610610162575f3560e01c8063715018a6116100c6578063c884ef831161007c578063f04e283e11610057578063f04e283e146103fd578063f2fde38b14610410578063fee81cf414610423575f80fd5b8063c884ef831461039b578063db09da12146103c9578063dcc59b6f146103e8575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610334578063a4d66daf14610367578063bb1757cf1461037c575f80fd5b8063715018a61461030057806387b9d25c14610308575f80fd5b806338d52e0f1161011b578063474f5a4411610101578063474f5a44146102755780634e7165a2146102be57806354d1f13d146102f8575f80fd5b806338d52e0f1461020f578063439fab9114610256575f80fd5b8063228cb7331161014b578063228cb733146101b757806325692962146101cb57806328d6183b146101d5575f80fd5b806301ffc9a71461016657806307621eca1461019a575b5f80fd5b348015610171575f80fd5b50610185610180366004610bd8565b610454565b60405190151581526020015b60405180910390f35b3480156101a5575f80fd5b505f545b604051908152602001610191565b3480156101c2575f80fd5b506101a95f5481565b6101d36104af565b005b3480156101e0575f80fd5b506040517fc2c281ec000000000000000000000000000000000000000000000000000000008152602001610191565b34801561021a575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b348015610261575f80fd5b506101d3610270366004610c63565b6104fc565b348015610280575f80fd5b5061029461028f366004610c63565b6105ed565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610191565b3480156102c9575f80fd5b506102eb6102d8366004610c63565b5050604080515f81526020810190915290565b6040516101919190610ca2565b6101d3610621565b6101d361065a565b348015610313575f80fd5b506001546102319073ffffffffffffffffffffffffffffffffffffffff1681565b34801561033f575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610231565b348015610372575f80fd5b506101a960025481565b348015610387575f80fd5b50610185610396366004610d16565b61066d565b3480156103a6575f80fd5b506101856103b5366004610d67565b60036020525f908152604090205460ff1681565b3480156103d4575f80fd5b506101856103e3366004610d16565b6107e0565b3480156103f3575f80fd5b506101a960045481565b6101d361040b366004610d67565b6108ca565b6101d361041e366004610d67565b610907565b34801561042e575f80fd5b506101a961043d366004610d67565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc2c281ec0000000000000000000000000000000000000000000000000000000014806104a957506104a98261092d565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561054d5760018160011c14303b106105445763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61055b83850185610d82565b905061056633610982565b8051600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020015160025580156105e8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6106626109e5565b61066b5f610a1a565b565b5f6106766109e5565b60025460048054905f61068883610dff565b919050551015806106bd575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff165b156106f4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84165f90815260036020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558061074b86610a7f565b6001546040517f3abb060400000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff1690633abb0604906107a79085908590600401610e5b565b5f604051808303815f87803b1580156107be575f80fd5b505af11580156107d0573d5f803e3d5ffd5b5060019998505050505050505050565b5f600254600454108015610819575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff16155b80156108c25750600154604080517fe3f756de00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015260248201929092525f604482015291169063e3f756de90606401602060405180830381865afa15801561089c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c09190610ef3565b155b949350505050565b6108d26109e5565b63389a75e1600c52805f526020600c2080544211156108f857636f5e88185f526004601cfd5b5f905561090481610a1a565b50565b61090f6109e5565b8060601b61092457637448fbae5f526004601cfd5b61090481610a1a565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806104a957506104a982610b42565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461066b576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b60408051600180825281830190925260609182915f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833701905050905084825f81518110610ada57610ada610f12565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610b2857610b28610f12565b911515602092830291909101909101529094909350915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104a957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104a9565b5f60208284031215610be8575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c17575f80fd5b9392505050565b5f8083601f840112610c2e575f80fd5b50813567ffffffffffffffff811115610c45575f80fd5b602083019150836020828501011115610c5c575f80fd5b9250929050565b5f8060208385031215610c74575f80fd5b823567ffffffffffffffff811115610c8a575f80fd5b610c9685828601610c1e565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610904575f80fd5b5f805f60408486031215610d28575f80fd5b8335610d3381610cf5565b9250602084013567ffffffffffffffff811115610d4e575f80fd5b610d5a86828701610c1e565b9497909650939450505050565b5f60208284031215610d77575f80fd5b8135610c1781610cf5565b5f6040828403128015610d93575f80fd5b506040805190810167ffffffffffffffff81118282101715610ddc577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040528235610dea81610cf5565b81526020928301359281019290925250919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610e54577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b604080825283519082018190525f9060208501906060840190835b81811015610eaa57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610e76565b5050838103602080860191909152855180835291810192508501905f5b81811015610ee75782511515845260209384019390920191600101610ec7565b50919695505050505050565b5f60208284031215610f03575f80fd5b81518015158114610c17575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea264697066735822122078882949b606774e898c3e9d00e31c48ad33853e2fe0339ceb8db636fe54b7ea64736f6c634300081a0033",U1="0x608060405260043610610162575f3560e01c8063715018a6116100c6578063c884ef831161007c578063f04e283e11610057578063f04e283e146103fd578063f2fde38b14610410578063fee81cf414610423575f80fd5b8063c884ef831461039b578063db09da12146103c9578063dcc59b6f146103e8575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610334578063a4d66daf14610367578063bb1757cf1461037c575f80fd5b8063715018a61461030057806387b9d25c14610308575f80fd5b806338d52e0f1161011b578063474f5a4411610101578063474f5a44146102755780634e7165a2146102be57806354d1f13d146102f8575f80fd5b806338d52e0f1461020f578063439fab9114610256575f80fd5b8063228cb7331161014b578063228cb733146101b757806325692962146101cb57806328d6183b146101d5575f80fd5b806301ffc9a71461016657806307621eca1461019a575b5f80fd5b348015610171575f80fd5b50610185610180366004610bd8565b610454565b60405190151581526020015b60405180910390f35b3480156101a5575f80fd5b505f545b604051908152602001610191565b3480156101c2575f80fd5b506101a95f5481565b6101d36104af565b005b3480156101e0575f80fd5b506040517fc2c281ec000000000000000000000000000000000000000000000000000000008152602001610191565b34801561021a575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b348015610261575f80fd5b506101d3610270366004610c63565b6104fc565b348015610280575f80fd5b5061029461028f366004610c63565b6105ed565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610191565b3480156102c9575f80fd5b506102eb6102d8366004610c63565b5050604080515f81526020810190915290565b6040516101919190610ca2565b6101d3610621565b6101d361065a565b348015610313575f80fd5b506001546102319073ffffffffffffffffffffffffffffffffffffffff1681565b34801561033f575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610231565b348015610372575f80fd5b506101a960025481565b348015610387575f80fd5b50610185610396366004610d16565b61066d565b3480156103a6575f80fd5b506101856103b5366004610d67565b60036020525f908152604090205460ff1681565b3480156103d4575f80fd5b506101856103e3366004610d16565b6107e0565b3480156103f3575f80fd5b506101a960045481565b6101d361040b366004610d67565b6108ca565b6101d361041e366004610d67565b610907565b34801561042e575f80fd5b506101a961043d366004610d67565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc2c281ec0000000000000000000000000000000000000000000000000000000014806104a957506104a98261092d565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561054d5760018160011c14303b106105445763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61055b83850185610d82565b905061056633610982565b8051600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020015160025580156105e8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6106626109e5565b61066b5f610a1a565b565b5f6106766109e5565b60025460048054905f61068883610dff565b919050551015806106bd575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff165b156106f4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84165f90815260036020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558061074b86610a7f565b6001546040517f3abb060400000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff1690633abb0604906107a79085908590600401610e5b565b5f604051808303815f87803b1580156107be575f80fd5b505af11580156107d0573d5f803e3d5ffd5b5060019998505050505050505050565b5f600254600454108015610819575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff16155b80156108c25750600154604080517fe3f756de00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015260248201929092525f604482015291169063e3f756de90606401602060405180830381865afa15801561089c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c09190610ef3565b155b949350505050565b6108d26109e5565b63389a75e1600c52805f526020600c2080544211156108f857636f5e88185f526004601cfd5b5f905561090481610a1a565b50565b61090f6109e5565b8060601b61092457637448fbae5f526004601cfd5b61090481610a1a565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806104a957506104a982610b42565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461066b576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b60408051600180825281830190925260609182915f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833701905050905084825f81518110610ada57610ada610f12565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610b2857610b28610f12565b911515602092830291909101909101529094909350915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104a957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104a9565b5f60208284031215610be8575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c17575f80fd5b9392505050565b5f8083601f840112610c2e575f80fd5b50813567ffffffffffffffff811115610c45575f80fd5b602083019150836020828501011115610c5c575f80fd5b9250929050565b5f8060208385031215610c74575f80fd5b823567ffffffffffffffff811115610c8a575f80fd5b610c9685828601610c1e565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610904575f80fd5b5f805f60408486031215610d28575f80fd5b8335610d3381610cf5565b9250602084013567ffffffffffffffff811115610d4e575f80fd5b610d5a86828701610c1e565b9497909650939450505050565b5f60208284031215610d77575f80fd5b8135610c1781610cf5565b5f6040828403128015610d93575f80fd5b506040805190810167ffffffffffffffff81118282101715610ddc577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040528235610dea81610cf5565b81526020928301359281019290925250919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610e54577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b604080825283519082018190525f9060208501906060840190835b81811015610eaa57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610e76565b5050838103602080860191909152855180835291810192508501905f5b81811015610ee75782511515845260209384019390920191600101610ec7565b50919695505050505050565b5f60208284031215610f03575f80fd5b81518015158114610c17575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea264697066735822122078882949b606774e898c3e9d00e31c48ad33853e2fe0339ceb8db636fe54b7ea64736f6c634300081a0033",q1={},j1={},H0={_format:k1,contractName:S1,sourceName:D1,abi:G1,bytecode:V1,deployedBytecode:U1,linkReferences:q1,deployedLinkReferences:j1},Z1="hh-sol-artifact-1",W1="CGDAIncentive",K1="contracts/incentives/CGDAIncentive.sol",Y1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"initialReward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"rewardDecay",type:"uint256"},{indexed:!1,internalType:"uint256",name:"rewardBoost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"totalBudget",type:"uint256"}],name:"CGDAIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"cgdaParams",outputs:[{internalType:"uint256",name:"rewardDecay",type:"uint256"},{internalType:"uint256",name:"rewardBoost",type:"uint256"},{internalType:"uint256",name:"lastClaimTime",type:"uint256"},{internalType:"uint256",name:"currentReward",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",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:[],name:"totalBudget",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Q1="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611b6f806100895f395ff3fe6080604052600436106101f5575f3560e01c806354d1f13d11610117578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105f8578063fe9fbb801461060b578063fee81cf41461062a575f80fd5b8063ec87621c146105d1578063f04e283e146105e5575f80fd5b8063c884ef8314610550578063db09da121461057e578063dcc213611461059d578063dcc59b6f146105bc575f80fd5b80638da5cb5b116100e75780638da5cb5b146104e5578063bb1757cf146104fd578063be4994f81461051c578063c78da39a1461053b575f80fd5b806354d1f13d1461047f578063715018a61461048757806375b238fc1461048f57806375ef18d0146104a3575f80fd5b80632de948071161018d578063474f5a441161015d578063474f5a44146103c25780634a4ee7b11461040b5780634e7165a21461041e578063514e62fc1461044a575f80fd5b80632de948071461030257806338d52e0f146103335780634359d28a14610384578063439fab91146103a3575f80fd5b80631cd64df4116101c85780631cd64df414610277578063228cb733146102ac57806325692962146102c057806328d6183b146102c8575f80fd5b806301ffc9a7146101f957806307621eca1461022d578063183a4f6e1461024f5780631c10893f14610264575b5f80fd5b348015610204575f80fd5b50610218610213366004611502565b61065b565b60405190151581526020015b60405180910390f35b348015610238575f80fd5b506102416106b6565b604051908152602001610224565b61026261025d366004611541565b610736565b005b610262610272366004611580565b610743565b348015610282575f80fd5b50610218610291366004611580565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102b7575f80fd5b506102415f5481565b610262610759565b3480156102d3575f80fd5b506040517f53cf8555000000000000000000000000000000000000000000000000000000008152602001610224565b34801561030d575f80fd5b5061024161031c3660046115a8565b638b78c6d8600c9081525f91909152602090205490565b34801561033e575f80fd5b5060075461035f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610224565b34801561038f575f80fd5b5061026261039e366004611609565b6107a6565b3480156103ae575f80fd5b506102626103bd3660046116b3565b6108a0565b3480156103cd575f80fd5b506103e16103dc3660046116b3565b610b63565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610224565b610262610419366004611580565b610c90565b348015610429575f80fd5b5061043d6104383660046116b3565b610ca2565b6040516102249190611720565b348015610455575f80fd5b50610218610464366004611580565b638b78c6d8600c9081525f9290925260209091205416151590565b610262610d60565b610262610d99565b34801561049a575f80fd5b50610241600281565b3480156104ae575f80fd5b506002546003546004546005546104c59392919084565b604080519485526020850193909352918301526060820152608001610224565b3480156104f0575f80fd5b50638b78c6d8195461035f565b348015610508575f80fd5b50610218610517366004611732565b610dac565b348015610527575f80fd5b50610262610536366004611609565b610f82565b348015610546575f80fd5b5061024160065481565b34801561055b575f80fd5b5061021861056a3660046115a8565b60016020525f908152604090205460ff1681565b348015610589575f80fd5b50610218610598366004611732565b611020565b3480156105a8575f80fd5b506102626105b7366004611609565b611032565b3480156105c7575f80fd5b5061024160085481565b3480156105dc575f80fd5b50610241600181565b6102626105f33660046115a8565b6110d0565b6102626106063660046115a8565b61110a565b348015610616575f80fd5b506102186106253660046115a8565b611130565b348015610635575f80fd5b506102416106443660046115a8565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f53cf85550000000000000000000000000000000000000000000000000000000014806106b057506106b08261118f565b92915050565b6004545f9081906106c790426117ae565b6007549091505f906106ef9073ffffffffffffffffffffffffffffffffffffffff16306111e4565b90505f610e106002600101548461070691906117c1565b61071091906117d8565b60055461071d9190611810565b905081811161072c578061072e565b815b935050505090565b6107403382611217565b50565b61074b611222565b610755828261123c565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026107b181611248565b8382146107ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898575f84848381811061080757610807611823565b905060200201602081019061081c9190611850565b905080151560010361085e5761085987878481811061083d5761083d611823565b905060200201602081019061085291906115a8565b600161123c565b61088f565b61088f87878481811061087357610873611823565b905060200201602081019061088891906115a8565b6001611217565b506001016107ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108f15760018160011c14303b106108e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6108ff838501856118f6565b80519091505f906109269073ffffffffffffffffffffffffffffffffffffffff16306111e4565b9050816080015181101561099757815160808301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b602082015115806109aa57506040820151155b806109b757506060820151155b806109c9575081602001518260800151105b15610a00576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560408051608080820183528285015180835260608087015160208086018290524296860187905288015191909401819052600291909155600392909255600492909255600555820151600655610a9b33611279565b610aaa8260a0015160016112c1565b815f015173ffffffffffffffffffffffffffffffffffffffff167f2364e5ed5f8639e9bae046dc67aabf43f410e931f25143a10f5e1a8744ad717e8360200151846040015185606001518660800151604051610b1f949392919093845260208401929092526040830152606082015260800190565b60405180910390a250508015610b5e576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b7081611248565b5f610b7d85870187611979565b90505f8160200151806020019051810190610b989190611a50565b8251600754919250610bc19173ffffffffffffffffffffffffffffffffffffffff169083611302565b81516007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610c6191611720565b60405180910390a260075490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c98611222565b6107558282611217565b60605f610cb1838501856118f6565b60408051608081019091529091508060018152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610d289151815260200190565b60408051601f19818403018152918152915251610d489190602001611a67565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610da1611222565b610daa5f611355565b565b5f610db5611222565b610dbe8461139f565b610e1b57604080517f4139d81d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015260248101919091525f604482015260640161098e565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556008805491610e7883611b02565b91905055505f610e866106b6565b426004556002549091508111610e9e57600254610eab565b600254610eab90826117ae565b600555600754610ed29073ffffffffffffffffffffffffffffffffffffffff168683611302565b6007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529187901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8616907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610f6f91611720565b60405180910390a2506001949350505050565b6002610f8d81611248565b838214610fc6576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561089857611018868683818110610fe557610fe5611823565b9050602002016020810190610ffa91906115a8565b85858481811061100c5761100c611823565b9050602002013561123c565b600101610fc8565b5f61102a8461139f565b949350505050565b600261103d81611248565b838214611076576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898576110c886868381811061109557611095611823565b90506020020160208101906110aa91906115a8565b8585848181106110bc576110bc611823565b90506020020135611217565b600101611078565b6110d8611222565b63389a75e1600c52805f526020600c2080544211156110fe57636f5e88185f526004601cfd5b5f905561074081611355565b611112611222565b8060601b61112757637448fbae5f526004601cfd5b61074081611355565b5f8173ffffffffffffffffffffffffffffffffffffffff16611155638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b05750638b78c6d8600c9081525f839052602090205460031615156106b0565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b057506106b082611415565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61075582825f6114ab565b638b78c6d819543314610daa576382b429005f526004601cfd5b610755828260016114ab565b638b78c6d81954331461074057638b78c6d8600c52335f52806020600c205416610740576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f51141661134b57803d853b15171061134b576390b8ec185f526004601cfd5b505f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f806113a96106b6565b90505f811180156113dd575060075481906113da9073ffffffffffffffffffffffffffffffffffffffff16306111e4565b10155b801561140e575073ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604090205460ff16155b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b0565b638b78c6d8600c52825f526020600c208054838117836114cc575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611512575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461140e575f80fd5b5f60208284031215611551575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461157b575f80fd5b919050565b5f8060408385031215611591575f80fd5b61159a83611558565b946020939093013593505050565b5f602082840312156115b8575f80fd5b61140e82611558565b5f8083601f8401126115d1575f80fd5b50813567ffffffffffffffff8111156115e8575f80fd5b6020830191508360208260051b8501011115611602575f80fd5b9250929050565b5f805f806040858703121561161c575f80fd5b843567ffffffffffffffff811115611632575f80fd5b61163e878288016115c1565b909550935050602085013567ffffffffffffffff81111561165d575f80fd5b611669878288016115c1565b95989497509550505050565b5f8083601f840112611685575f80fd5b50813567ffffffffffffffff81111561169c575f80fd5b602083019150836020828501011115611602575f80fd5b5f80602083850312156116c4575f80fd5b823567ffffffffffffffff8111156116da575f80fd5b6116e685828601611675565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61140e60208301846116f2565b5f805f60408486031215611744575f80fd5b61174d84611558565b9250602084013567ffffffffffffffff811115611768575f80fd5b61177486828701611675565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156106b0576106b0611781565b80820281158282048414176106b0576106b0611781565b5f8261180b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156106b0576106b0611781565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611860575f80fd5b8135801515811461140e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118bf576118bf61186f565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156118ee576118ee61186f565b604052919050565b5f60c0828403128015611907575f80fd5b5060405160c0810167ffffffffffffffff8111828210171561192b5761192b61186f565b60405261193783611558565b81526020838101359082015260408084013590820152606080840135908201526080808401359082015261196d60a08401611558565b60a08201529392505050565b5f60208284031215611989575f80fd5b813567ffffffffffffffff81111561199f575f80fd5b8201604081850312156119b0575f80fd5b6119b861189c565b6119c182611558565b8152602082013567ffffffffffffffff8111156119dc575f80fd5b80830192505084601f8301126119f0575f80fd5b813567ffffffffffffffff811115611a0a57611a0a61186f565b611a1d6020601f19601f840116016118c5565b818152866020838601011115611a31575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611a60575f80fd5b5051919050565b602081525f825160038110611aa3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261102a60a08401826116f2565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b3257611b32611781565b506001019056fea2646970667358221220b907f524c00fc94c347789c150ead10c0b70a2de12eb7cada7da415e65dc020864736f6c634300081a0033",J1="0x6080604052600436106101f5575f3560e01c806354d1f13d11610117578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105f8578063fe9fbb801461060b578063fee81cf41461062a575f80fd5b8063ec87621c146105d1578063f04e283e146105e5575f80fd5b8063c884ef8314610550578063db09da121461057e578063dcc213611461059d578063dcc59b6f146105bc575f80fd5b80638da5cb5b116100e75780638da5cb5b146104e5578063bb1757cf146104fd578063be4994f81461051c578063c78da39a1461053b575f80fd5b806354d1f13d1461047f578063715018a61461048757806375b238fc1461048f57806375ef18d0146104a3575f80fd5b80632de948071161018d578063474f5a441161015d578063474f5a44146103c25780634a4ee7b11461040b5780634e7165a21461041e578063514e62fc1461044a575f80fd5b80632de948071461030257806338d52e0f146103335780634359d28a14610384578063439fab91146103a3575f80fd5b80631cd64df4116101c85780631cd64df414610277578063228cb733146102ac57806325692962146102c057806328d6183b146102c8575f80fd5b806301ffc9a7146101f957806307621eca1461022d578063183a4f6e1461024f5780631c10893f14610264575b5f80fd5b348015610204575f80fd5b50610218610213366004611502565b61065b565b60405190151581526020015b60405180910390f35b348015610238575f80fd5b506102416106b6565b604051908152602001610224565b61026261025d366004611541565b610736565b005b610262610272366004611580565b610743565b348015610282575f80fd5b50610218610291366004611580565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102b7575f80fd5b506102415f5481565b610262610759565b3480156102d3575f80fd5b506040517f53cf8555000000000000000000000000000000000000000000000000000000008152602001610224565b34801561030d575f80fd5b5061024161031c3660046115a8565b638b78c6d8600c9081525f91909152602090205490565b34801561033e575f80fd5b5060075461035f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610224565b34801561038f575f80fd5b5061026261039e366004611609565b6107a6565b3480156103ae575f80fd5b506102626103bd3660046116b3565b6108a0565b3480156103cd575f80fd5b506103e16103dc3660046116b3565b610b63565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610224565b610262610419366004611580565b610c90565b348015610429575f80fd5b5061043d6104383660046116b3565b610ca2565b6040516102249190611720565b348015610455575f80fd5b50610218610464366004611580565b638b78c6d8600c9081525f9290925260209091205416151590565b610262610d60565b610262610d99565b34801561049a575f80fd5b50610241600281565b3480156104ae575f80fd5b506002546003546004546005546104c59392919084565b604080519485526020850193909352918301526060820152608001610224565b3480156104f0575f80fd5b50638b78c6d8195461035f565b348015610508575f80fd5b50610218610517366004611732565b610dac565b348015610527575f80fd5b50610262610536366004611609565b610f82565b348015610546575f80fd5b5061024160065481565b34801561055b575f80fd5b5061021861056a3660046115a8565b60016020525f908152604090205460ff1681565b348015610589575f80fd5b50610218610598366004611732565b611020565b3480156105a8575f80fd5b506102626105b7366004611609565b611032565b3480156105c7575f80fd5b5061024160085481565b3480156105dc575f80fd5b50610241600181565b6102626105f33660046115a8565b6110d0565b6102626106063660046115a8565b61110a565b348015610616575f80fd5b506102186106253660046115a8565b611130565b348015610635575f80fd5b506102416106443660046115a8565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f53cf85550000000000000000000000000000000000000000000000000000000014806106b057506106b08261118f565b92915050565b6004545f9081906106c790426117ae565b6007549091505f906106ef9073ffffffffffffffffffffffffffffffffffffffff16306111e4565b90505f610e106002600101548461070691906117c1565b61071091906117d8565b60055461071d9190611810565b905081811161072c578061072e565b815b935050505090565b6107403382611217565b50565b61074b611222565b610755828261123c565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026107b181611248565b8382146107ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898575f84848381811061080757610807611823565b905060200201602081019061081c9190611850565b905080151560010361085e5761085987878481811061083d5761083d611823565b905060200201602081019061085291906115a8565b600161123c565b61088f565b61088f87878481811061087357610873611823565b905060200201602081019061088891906115a8565b6001611217565b506001016107ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108f15760018160011c14303b106108e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6108ff838501856118f6565b80519091505f906109269073ffffffffffffffffffffffffffffffffffffffff16306111e4565b9050816080015181101561099757815160808301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b602082015115806109aa57506040820151155b806109b757506060820151155b806109c9575081602001518260800151105b15610a00576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560408051608080820183528285015180835260608087015160208086018290524296860187905288015191909401819052600291909155600392909255600492909255600555820151600655610a9b33611279565b610aaa8260a0015160016112c1565b815f015173ffffffffffffffffffffffffffffffffffffffff167f2364e5ed5f8639e9bae046dc67aabf43f410e931f25143a10f5e1a8744ad717e8360200151846040015185606001518660800151604051610b1f949392919093845260208401929092526040830152606082015260800190565b60405180910390a250508015610b5e576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b7081611248565b5f610b7d85870187611979565b90505f8160200151806020019051810190610b989190611a50565b8251600754919250610bc19173ffffffffffffffffffffffffffffffffffffffff169083611302565b81516007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610c6191611720565b60405180910390a260075490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c98611222565b6107558282611217565b60605f610cb1838501856118f6565b60408051608081019091529091508060018152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610d289151815260200190565b60408051601f19818403018152918152915251610d489190602001611a67565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610da1611222565b610daa5f611355565b565b5f610db5611222565b610dbe8461139f565b610e1b57604080517f4139d81d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015260248101919091525f604482015260640161098e565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556008805491610e7883611b02565b91905055505f610e866106b6565b426004556002549091508111610e9e57600254610eab565b600254610eab90826117ae565b600555600754610ed29073ffffffffffffffffffffffffffffffffffffffff168683611302565b6007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529187901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8616907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610f6f91611720565b60405180910390a2506001949350505050565b6002610f8d81611248565b838214610fc6576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561089857611018868683818110610fe557610fe5611823565b9050602002016020810190610ffa91906115a8565b85858481811061100c5761100c611823565b9050602002013561123c565b600101610fc8565b5f61102a8461139f565b949350505050565b600261103d81611248565b838214611076576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898576110c886868381811061109557611095611823565b90506020020160208101906110aa91906115a8565b8585848181106110bc576110bc611823565b90506020020135611217565b600101611078565b6110d8611222565b63389a75e1600c52805f526020600c2080544211156110fe57636f5e88185f526004601cfd5b5f905561074081611355565b611112611222565b8060601b61112757637448fbae5f526004601cfd5b61074081611355565b5f8173ffffffffffffffffffffffffffffffffffffffff16611155638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b05750638b78c6d8600c9081525f839052602090205460031615156106b0565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b057506106b082611415565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61075582825f6114ab565b638b78c6d819543314610daa576382b429005f526004601cfd5b610755828260016114ab565b638b78c6d81954331461074057638b78c6d8600c52335f52806020600c205416610740576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f51141661134b57803d853b15171061134b576390b8ec185f526004601cfd5b505f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f806113a96106b6565b90505f811180156113dd575060075481906113da9073ffffffffffffffffffffffffffffffffffffffff16306111e4565b10155b801561140e575073ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604090205460ff16155b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b0565b638b78c6d8600c52825f526020600c208054838117836114cc575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611512575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461140e575f80fd5b5f60208284031215611551575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461157b575f80fd5b919050565b5f8060408385031215611591575f80fd5b61159a83611558565b946020939093013593505050565b5f602082840312156115b8575f80fd5b61140e82611558565b5f8083601f8401126115d1575f80fd5b50813567ffffffffffffffff8111156115e8575f80fd5b6020830191508360208260051b8501011115611602575f80fd5b9250929050565b5f805f806040858703121561161c575f80fd5b843567ffffffffffffffff811115611632575f80fd5b61163e878288016115c1565b909550935050602085013567ffffffffffffffff81111561165d575f80fd5b611669878288016115c1565b95989497509550505050565b5f8083601f840112611685575f80fd5b50813567ffffffffffffffff81111561169c575f80fd5b602083019150836020828501011115611602575f80fd5b5f80602083850312156116c4575f80fd5b823567ffffffffffffffff8111156116da575f80fd5b6116e685828601611675565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61140e60208301846116f2565b5f805f60408486031215611744575f80fd5b61174d84611558565b9250602084013567ffffffffffffffff811115611768575f80fd5b61177486828701611675565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156106b0576106b0611781565b80820281158282048414176106b0576106b0611781565b5f8261180b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156106b0576106b0611781565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611860575f80fd5b8135801515811461140e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118bf576118bf61186f565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156118ee576118ee61186f565b604052919050565b5f60c0828403128015611907575f80fd5b5060405160c0810167ffffffffffffffff8111828210171561192b5761192b61186f565b60405261193783611558565b81526020838101359082015260408084013590820152606080840135908201526080808401359082015261196d60a08401611558565b60a08201529392505050565b5f60208284031215611989575f80fd5b813567ffffffffffffffff81111561199f575f80fd5b8201604081850312156119b0575f80fd5b6119b861189c565b6119c182611558565b8152602082013567ffffffffffffffff8111156119dc575f80fd5b80830192505084601f8301126119f0575f80fd5b813567ffffffffffffffff811115611a0a57611a0a61186f565b611a1d6020601f19601f840116016118c5565b818152866020838601011115611a31575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611a60575f80fd5b5051919050565b602081525f825160038110611aa3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261102a60a08401826116f2565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b3257611b32611781565b506001019056fea2646970667358221220b907f524c00fc94c347789c150ead10c0b70a2de12eb7cada7da415e65dc020864736f6c634300081a0033",X1={},f5={},F0={_format:Z1,contractName:W1,sourceName:K1,abi:Y1,bytecode:Q1,deployedBytecode:J1,linkReferences:X1,deployedLinkReferences:f5},e5="hh-sol-artifact-1",b5="ERC20Incentive",a5="contracts/incentives/ERC20Incentive.sol",t5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"enum AERC20Incentive.Strategy",name:"strategy",type:"uint8"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"},{indexed:!1,internalType:"address",name:"manager",type:"address"}],name:"ERC20IncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"entry",type:"address"}],name:"Entry",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ToppedUp",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"drawRaffle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"entries",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"strategy",outputs:[{internalType:"enum AERC20Incentive.Strategy",name:"",type:"uint8"}],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:"uint256",name:"amount",type:"uint256"}],name:"topup",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],d5="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612149806100895f395ff3fe608060405260043610610243575f3560e01c806354d1f13d11610131578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b14610677578063fe9fbb801461068a578063fee81cf4146106a9575f80fd5b8063ec87621c14610650578063f04e283e14610664575f80fd5b8063c884ef83146105cf578063db09da12146105fd578063dcc213611461061c578063dcc59b6f1461063b575f80fd5b8063a4d66daf11610101578063b30906d4116100e7578063b30906d414610572578063bb1757cf14610591578063be4994f8146105b0575f80fd5b8063a4d66daf14610537578063a8c62e761461054c575f80fd5b806354d1f13d146104fb578063715018a61461050357806375b238fc1461050b5780638da5cb5b1461051f575f80fd5b80632de94807116101c1578063439fab91116101915780634a4ee7b1116101775780634a4ee7b1146104875780634e7165a21461049a578063514e62fc146104c6575f80fd5b8063439fab911461041f578063474f5a441461043e575f80fd5b80632de948071461035f57806330db555f1461039057806338d52e0f146103af5780634359d28a14610400575f80fd5b80631cd64df411610216578063228cb733116101fc578063228cb73314610309578063256929621461031d57806328d6183b14610325575f80fd5b80631cd64df4146102c05780632275aea9146102f5575f80fd5b806301ffc9a71461024757806307621eca1461027b578063183a4f6e146102985780631c10893f146102ad575b5f80fd5b348015610252575f80fd5b506102666102613660046119ee565b6106da565b60405190151581526020015b60405180910390f35b348015610286575f80fd5b505f545b604051908152602001610272565b6102ab6102a6366004611a2d565b610735565b005b6102ab6102bb366004611a6c565b610742565b3480156102cb575f80fd5b506102666102da366004611a6c565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610300575f80fd5b506102ab610758565b348015610314575f80fd5b5061028a5f5481565b6102ab6108d7565b348015610330575f80fd5b506040517f7cc1d5bb000000000000000000000000000000000000000000000000000000008152602001610272565b34801561036a575f80fd5b5061028a610379366004611a94565b638b78c6d8600c9081525f91909152602090205490565b34801561039b575f80fd5b506102ab6103aa366004611a2d565b610924565b3480156103ba575f80fd5b506004546103db9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610272565b34801561040b575f80fd5b506102ab61041a366004611af5565b610a83565b34801561042a575f80fd5b506102ab610439366004611b9f565b610b7d565b348015610449575f80fd5b5061045d610458366004611b9f565b610e4a565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610272565b6102ab610495366004611a6c565b61104d565b3480156104a5575f80fd5b506104b96104b4366004611b9f565b61105f565b6040516102729190611c0c565b3480156104d1575f80fd5b506102666104e0366004611a6c565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ab61112f565b6102ab611168565b348015610516575f80fd5b5061028a600281565b34801561052a575f80fd5b50638b78c6d819546103db565b348015610542575f80fd5b5061028a60065481565b348015610557575f80fd5b506002546105659060ff1681565b6040516102729190611c5f565b34801561057d575f80fd5b506103db61058c366004611a2d565b61117b565b34801561059c575f80fd5b506102666105ab366004611c6d565b6111b0565b3480156105bb575f80fd5b506102ab6105ca366004611af5565b611421565b3480156105da575f80fd5b506102666105e9366004611a94565b60016020525f908152604090205460ff1681565b348015610608575f80fd5b50610266610617366004611c6d565b6114bf565b348015610627575f80fd5b506102ab610636366004611af5565b6114d1565b348015610646575f80fd5b5061028a60055481565b34801561065b575f80fd5b5061028a600181565b6102ab610672366004611a94565b61156f565b6102ab610685366004611a94565b6115a9565b348015610695575f80fd5b506102666106a4366004611a94565b6115cf565b3480156106b4575f80fd5b5061028a6106c3366004611a94565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7cc1d5bb00000000000000000000000000000000000000000000000000000000148061072f575061072f8261162e565b92915050565b61073f3382611683565b50565b61074a61168e565b61075482826116a8565b5050565b6001610763816116b4565b600160025460ff16600181111561077c5761077c611c1e565b146107b3576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051806020016040528042446107cb9190611ce9565b905260038054602083208084529293505f926107e79190611d29565b815481106107f7576107f7611d3c565b5f918252602082200154905460045473ffffffffffffffffffffffffffffffffffffffff928316935061082d92169083906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529284901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8216907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f19818403018152908290526108ca91611c0c565b60405180910390a2505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161092f8161172b565b815f03610968576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045461098d9073ffffffffffffffffffffffffffffffffffffffff1633308561175c565b600160025460ff1660018111156109a6576109a6611c1e565b036109dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f546109e99083611d29565b15610a20576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054610a2d9084611d69565b90508060065f828254610a409190611ce9565b909155505060408051338152602081018590527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a1505050565b6002610a8e8161172b565b838214610ac7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75575f848483818110610ae457610ae4611d3c565b9050602002016020810190610af99190611d7c565b9050801515600103610b3b57610b36878784818110610b1a57610b1a611d3c565b9050602002016020810190610b2f9190611a94565b60016116a8565b610b6c565b610b6c878784818110610b5057610b50611d3c565b9050602002016020810190610b659190611a94565b6001611683565b50600101610ac9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610bce5760018160011c14303b10610bc55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610bdc83850185611e22565b905080604001515f1480610bf257506060810151155b15610c29576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600182602001516001811115610c4257610c42611c1e565b03610c51578160400151610c65565b81606001518260400151610c659190611ea7565b82519091505f90610c8c9073ffffffffffffffffffffffffffffffffffffffff16306117be565b905081811015610cf65782516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015260248101829052604481018390526064015b60405180910390fd5b8251600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020830151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610d7a57610d7a611c1e565b021790555060408301515f556060830151600655610d97336117f1565b610da683608001516001611839565b825f015173ffffffffffffffffffffffffffffffffffffffff167fe83379cf1b79044fa1d0063e68012349f4f5fb730e6a875bdc9d463747ecd0858460200151856040015186606001518760800151604051610e059493929190611ebe565b60405180910390a25050508015610e45576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610e578161172b565b5f610e6485870187611efd565b90505f8160200151806020019051810190610e7f9190611fd4565b9050600160025460ff166001811115610e9a57610e9a611c1e565b03610f11575f5481141580610eb057505f600554115b15610f08573382604051602001610ec79190611feb565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610ced9291600401612025565b5f600655610f56565b5f54610f1d9082611d29565b15610f34573382604051602001610ec79190611feb565b5f54610f409082611d69565b60065f828254610f509190612053565b90915550505b8151600454610f7e9173ffffffffffffffffffffffffffffffffffffffff90911690836116d8565b81516004546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261101e91611c0c565b60405180910390a260045490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b61105561168e565b6107548282611683565b60605f61106e83850185611e22565b90505f60018260200151600181111561108957611089611c1e565b036110985781604001516110ac565b816060015182604001516110ac9190611ea7565b6040805160808101825260018152845173ffffffffffffffffffffffffffffffffffffffff16602080830191909152308284015282518082018452849052825180820185905283518082038301815290840184526060830152915192935061111692909101612066565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61117061168e565b6111795f61187a565b565b6003818154811061118a575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f6111b961168e565b6111c2846118c4565b6111f8576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025460ff16600181111561121057611210611c1e565b036113375760058054905f611224836120dc565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790555460045461128a92169086906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529287901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8516907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261132791611c0c565b60405180910390a250600161141a565b60058054905f611346836120dc565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560038054928301815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055517ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f1539190a25060015b9392505050565b600261142c8161172b565b838214611465576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75576114b786868381811061148457611484611d3c565b90506020020160208101906114999190611a94565b8585848181106114ab576114ab611d3c565b905060200201356116a8565b600101611467565b5f6114c9846118c4565b949350505050565b60026114dc8161172b565b838214611515576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b755761156786868381811061153457611534611d3c565b90506020020160208101906115499190611a94565b85858481811061155b5761155b611d3c565b90506020020135611683565b600101611517565b61157761168e565b63389a75e1600c52805f526020600c20805442111561159d57636f5e88185f526004601cfd5b5f905561073f8161187a565b6115b161168e565b8060601b6115c657637448fbae5f526004601cfd5b61073f8161187a565b5f8173ffffffffffffffffffffffffffffffffffffffff166115f4638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061072f5750638b78c6d8600c9081525f8390526020902054600316151561072f565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061072f575061072f82611901565b61075482825f611997565b638b78c6d819543314611179576382b429005f526004601cfd5b61075482826001611997565b638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f51141661172157803d853b151710611721576390b8ec185f526004601cfd5b505f603452505050565b638b78c6d81954331461073f57638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f5114166117b057803d873b1517106117b057637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561072f57506006546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061072f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461072f565b638b78c6d8600c52825f526020600c208054838117836119b8575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f602082840312156119fe575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461141a575f80fd5b5f60208284031215611a3d575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611a67575f80fd5b919050565b5f8060408385031215611a7d575f80fd5b611a8683611a44565b946020939093013593505050565b5f60208284031215611aa4575f80fd5b61141a82611a44565b5f8083601f840112611abd575f80fd5b50813567ffffffffffffffff811115611ad4575f80fd5b6020830191508360208260051b8501011115611aee575f80fd5b9250929050565b5f805f8060408587031215611b08575f80fd5b843567ffffffffffffffff811115611b1e575f80fd5b611b2a87828801611aad565b909550935050602085013567ffffffffffffffff811115611b49575f80fd5b611b5587828801611aad565b95989497509550505050565b5f8083601f840112611b71575f80fd5b50813567ffffffffffffffff811115611b88575f80fd5b602083019150836020828501011115611aee575f80fd5b5f8060208385031215611bb0575f80fd5b823567ffffffffffffffff811115611bc6575f80fd5b611bd285828601611b61565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61141a6020830184611bde565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611c5b57611c5b611c1e565b9052565b6020810161072f8284611c4b565b5f805f60408486031215611c7f575f80fd5b611c8884611a44565b9250602084013567ffffffffffffffff811115611ca3575f80fd5b611caf86828701611b61565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561072f5761072f611cbc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82611d3757611d37611cfc565b500690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82611d7757611d77611cfc565b500490565b5f60208284031215611d8c575f80fd5b8135801515811461141a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611deb57611deb611d9b565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e1a57611e1a611d9b565b604052919050565b5f60a0828403128015611e33575f80fd5b5060405160a0810167ffffffffffffffff81118282101715611e5757611e57611d9b565b604052611e6383611a44565b8152602083013560028110611e76575f80fd5b60208201526040838101359082015260608084013590820152611e9b60808401611a44565b60808201529392505050565b808202811582820484141761072f5761072f611cbc565b60808101611ecc8287611c4b565b84602083015283604083015273ffffffffffffffffffffffffffffffffffffffff8316606083015295945050505050565b5f60208284031215611f0d575f80fd5b813567ffffffffffffffff811115611f23575f80fd5b820160408185031215611f34575f80fd5b611f3c611dc8565b611f4582611a44565b8152602082013567ffffffffffffffff811115611f60575f80fd5b80830192505084601f830112611f74575f80fd5b813567ffffffffffffffff811115611f8e57611f8e611d9b565b611fa16020601f19601f84011601611df1565b818152866020838601011115611fb5575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611fe4575f80fd5b5051919050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f60208301516040808401526114c96060840182611bde565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6114c96040830184611bde565b8181038181111561072f5761072f611cbc565b602081525f82516003811061207d5761207d611c1e565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526114c960a0840182611bde565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361210c5761210c611cbc565b506001019056fea26469706673582212209def68a22e935c7af91e946bb2187abd14944a4cd3b455abbdb234120eea61b564736f6c634300081a0033",n5="0x608060405260043610610243575f3560e01c806354d1f13d11610131578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b14610677578063fe9fbb801461068a578063fee81cf4146106a9575f80fd5b8063ec87621c14610650578063f04e283e14610664575f80fd5b8063c884ef83146105cf578063db09da12146105fd578063dcc213611461061c578063dcc59b6f1461063b575f80fd5b8063a4d66daf11610101578063b30906d4116100e7578063b30906d414610572578063bb1757cf14610591578063be4994f8146105b0575f80fd5b8063a4d66daf14610537578063a8c62e761461054c575f80fd5b806354d1f13d146104fb578063715018a61461050357806375b238fc1461050b5780638da5cb5b1461051f575f80fd5b80632de94807116101c1578063439fab91116101915780634a4ee7b1116101775780634a4ee7b1146104875780634e7165a21461049a578063514e62fc146104c6575f80fd5b8063439fab911461041f578063474f5a441461043e575f80fd5b80632de948071461035f57806330db555f1461039057806338d52e0f146103af5780634359d28a14610400575f80fd5b80631cd64df411610216578063228cb733116101fc578063228cb73314610309578063256929621461031d57806328d6183b14610325575f80fd5b80631cd64df4146102c05780632275aea9146102f5575f80fd5b806301ffc9a71461024757806307621eca1461027b578063183a4f6e146102985780631c10893f146102ad575b5f80fd5b348015610252575f80fd5b506102666102613660046119ee565b6106da565b60405190151581526020015b60405180910390f35b348015610286575f80fd5b505f545b604051908152602001610272565b6102ab6102a6366004611a2d565b610735565b005b6102ab6102bb366004611a6c565b610742565b3480156102cb575f80fd5b506102666102da366004611a6c565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610300575f80fd5b506102ab610758565b348015610314575f80fd5b5061028a5f5481565b6102ab6108d7565b348015610330575f80fd5b506040517f7cc1d5bb000000000000000000000000000000000000000000000000000000008152602001610272565b34801561036a575f80fd5b5061028a610379366004611a94565b638b78c6d8600c9081525f91909152602090205490565b34801561039b575f80fd5b506102ab6103aa366004611a2d565b610924565b3480156103ba575f80fd5b506004546103db9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610272565b34801561040b575f80fd5b506102ab61041a366004611af5565b610a83565b34801561042a575f80fd5b506102ab610439366004611b9f565b610b7d565b348015610449575f80fd5b5061045d610458366004611b9f565b610e4a565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610272565b6102ab610495366004611a6c565b61104d565b3480156104a5575f80fd5b506104b96104b4366004611b9f565b61105f565b6040516102729190611c0c565b3480156104d1575f80fd5b506102666104e0366004611a6c565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ab61112f565b6102ab611168565b348015610516575f80fd5b5061028a600281565b34801561052a575f80fd5b50638b78c6d819546103db565b348015610542575f80fd5b5061028a60065481565b348015610557575f80fd5b506002546105659060ff1681565b6040516102729190611c5f565b34801561057d575f80fd5b506103db61058c366004611a2d565b61117b565b34801561059c575f80fd5b506102666105ab366004611c6d565b6111b0565b3480156105bb575f80fd5b506102ab6105ca366004611af5565b611421565b3480156105da575f80fd5b506102666105e9366004611a94565b60016020525f908152604090205460ff1681565b348015610608575f80fd5b50610266610617366004611c6d565b6114bf565b348015610627575f80fd5b506102ab610636366004611af5565b6114d1565b348015610646575f80fd5b5061028a60055481565b34801561065b575f80fd5b5061028a600181565b6102ab610672366004611a94565b61156f565b6102ab610685366004611a94565b6115a9565b348015610695575f80fd5b506102666106a4366004611a94565b6115cf565b3480156106b4575f80fd5b5061028a6106c3366004611a94565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7cc1d5bb00000000000000000000000000000000000000000000000000000000148061072f575061072f8261162e565b92915050565b61073f3382611683565b50565b61074a61168e565b61075482826116a8565b5050565b6001610763816116b4565b600160025460ff16600181111561077c5761077c611c1e565b146107b3576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051806020016040528042446107cb9190611ce9565b905260038054602083208084529293505f926107e79190611d29565b815481106107f7576107f7611d3c565b5f918252602082200154905460045473ffffffffffffffffffffffffffffffffffffffff928316935061082d92169083906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529284901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8216907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f19818403018152908290526108ca91611c0c565b60405180910390a2505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161092f8161172b565b815f03610968576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045461098d9073ffffffffffffffffffffffffffffffffffffffff1633308561175c565b600160025460ff1660018111156109a6576109a6611c1e565b036109dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f546109e99083611d29565b15610a20576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054610a2d9084611d69565b90508060065f828254610a409190611ce9565b909155505060408051338152602081018590527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a1505050565b6002610a8e8161172b565b838214610ac7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75575f848483818110610ae457610ae4611d3c565b9050602002016020810190610af99190611d7c565b9050801515600103610b3b57610b36878784818110610b1a57610b1a611d3c565b9050602002016020810190610b2f9190611a94565b60016116a8565b610b6c565b610b6c878784818110610b5057610b50611d3c565b9050602002016020810190610b659190611a94565b6001611683565b50600101610ac9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610bce5760018160011c14303b10610bc55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610bdc83850185611e22565b905080604001515f1480610bf257506060810151155b15610c29576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600182602001516001811115610c4257610c42611c1e565b03610c51578160400151610c65565b81606001518260400151610c659190611ea7565b82519091505f90610c8c9073ffffffffffffffffffffffffffffffffffffffff16306117be565b905081811015610cf65782516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015260248101829052604481018390526064015b60405180910390fd5b8251600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020830151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610d7a57610d7a611c1e565b021790555060408301515f556060830151600655610d97336117f1565b610da683608001516001611839565b825f015173ffffffffffffffffffffffffffffffffffffffff167fe83379cf1b79044fa1d0063e68012349f4f5fb730e6a875bdc9d463747ecd0858460200151856040015186606001518760800151604051610e059493929190611ebe565b60405180910390a25050508015610e45576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610e578161172b565b5f610e6485870187611efd565b90505f8160200151806020019051810190610e7f9190611fd4565b9050600160025460ff166001811115610e9a57610e9a611c1e565b03610f11575f5481141580610eb057505f600554115b15610f08573382604051602001610ec79190611feb565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610ced9291600401612025565b5f600655610f56565b5f54610f1d9082611d29565b15610f34573382604051602001610ec79190611feb565b5f54610f409082611d69565b60065f828254610f509190612053565b90915550505b8151600454610f7e9173ffffffffffffffffffffffffffffffffffffffff90911690836116d8565b81516004546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261101e91611c0c565b60405180910390a260045490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b61105561168e565b6107548282611683565b60605f61106e83850185611e22565b90505f60018260200151600181111561108957611089611c1e565b036110985781604001516110ac565b816060015182604001516110ac9190611ea7565b6040805160808101825260018152845173ffffffffffffffffffffffffffffffffffffffff16602080830191909152308284015282518082018452849052825180820185905283518082038301815290840184526060830152915192935061111692909101612066565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61117061168e565b6111795f61187a565b565b6003818154811061118a575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f6111b961168e565b6111c2846118c4565b6111f8576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025460ff16600181111561121057611210611c1e565b036113375760058054905f611224836120dc565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790555460045461128a92169086906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529287901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8516907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261132791611c0c565b60405180910390a250600161141a565b60058054905f611346836120dc565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560038054928301815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055517ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f1539190a25060015b9392505050565b600261142c8161172b565b838214611465576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75576114b786868381811061148457611484611d3c565b90506020020160208101906114999190611a94565b8585848181106114ab576114ab611d3c565b905060200201356116a8565b600101611467565b5f6114c9846118c4565b949350505050565b60026114dc8161172b565b838214611515576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b755761156786868381811061153457611534611d3c565b90506020020160208101906115499190611a94565b85858481811061155b5761155b611d3c565b90506020020135611683565b600101611517565b61157761168e565b63389a75e1600c52805f526020600c20805442111561159d57636f5e88185f526004601cfd5b5f905561073f8161187a565b6115b161168e565b8060601b6115c657637448fbae5f526004601cfd5b61073f8161187a565b5f8173ffffffffffffffffffffffffffffffffffffffff166115f4638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061072f5750638b78c6d8600c9081525f8390526020902054600316151561072f565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061072f575061072f82611901565b61075482825f611997565b638b78c6d819543314611179576382b429005f526004601cfd5b61075482826001611997565b638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f51141661172157803d853b151710611721576390b8ec185f526004601cfd5b505f603452505050565b638b78c6d81954331461073f57638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f5114166117b057803d873b1517106117b057637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561072f57506006546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061072f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461072f565b638b78c6d8600c52825f526020600c208054838117836119b8575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f602082840312156119fe575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461141a575f80fd5b5f60208284031215611a3d575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611a67575f80fd5b919050565b5f8060408385031215611a7d575f80fd5b611a8683611a44565b946020939093013593505050565b5f60208284031215611aa4575f80fd5b61141a82611a44565b5f8083601f840112611abd575f80fd5b50813567ffffffffffffffff811115611ad4575f80fd5b6020830191508360208260051b8501011115611aee575f80fd5b9250929050565b5f805f8060408587031215611b08575f80fd5b843567ffffffffffffffff811115611b1e575f80fd5b611b2a87828801611aad565b909550935050602085013567ffffffffffffffff811115611b49575f80fd5b611b5587828801611aad565b95989497509550505050565b5f8083601f840112611b71575f80fd5b50813567ffffffffffffffff811115611b88575f80fd5b602083019150836020828501011115611aee575f80fd5b5f8060208385031215611bb0575f80fd5b823567ffffffffffffffff811115611bc6575f80fd5b611bd285828601611b61565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61141a6020830184611bde565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611c5b57611c5b611c1e565b9052565b6020810161072f8284611c4b565b5f805f60408486031215611c7f575f80fd5b611c8884611a44565b9250602084013567ffffffffffffffff811115611ca3575f80fd5b611caf86828701611b61565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561072f5761072f611cbc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82611d3757611d37611cfc565b500690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82611d7757611d77611cfc565b500490565b5f60208284031215611d8c575f80fd5b8135801515811461141a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611deb57611deb611d9b565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e1a57611e1a611d9b565b604052919050565b5f60a0828403128015611e33575f80fd5b5060405160a0810167ffffffffffffffff81118282101715611e5757611e57611d9b565b604052611e6383611a44565b8152602083013560028110611e76575f80fd5b60208201526040838101359082015260608084013590820152611e9b60808401611a44565b60808201529392505050565b808202811582820484141761072f5761072f611cbc565b60808101611ecc8287611c4b565b84602083015283604083015273ffffffffffffffffffffffffffffffffffffffff8316606083015295945050505050565b5f60208284031215611f0d575f80fd5b813567ffffffffffffffff811115611f23575f80fd5b820160408185031215611f34575f80fd5b611f3c611dc8565b611f4582611a44565b8152602082013567ffffffffffffffff811115611f60575f80fd5b80830192505084601f830112611f74575f80fd5b813567ffffffffffffffff811115611f8e57611f8e611d9b565b611fa16020601f19601f84011601611df1565b818152866020838601011115611fb5575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611fe4575f80fd5b5051919050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f60208301516040808401526114c96060840182611bde565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6114c96040830184611bde565b8181038181111561072f5761072f611cbc565b602081525f82516003811061207d5761207d611c1e565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526114c960a0840182611bde565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361210c5761210c611cbc565b506001019056fea26469706673582212209def68a22e935c7af91e946bb2187abd14944a4cd3b455abbdb234120eea61b564736f6c634300081a0033",c5={},i5={},k0={_format:e5,contractName:b5,sourceName:a5,abi:t5,bytecode:d5,deployedBytecode:n5,linkReferences:c5,deployedLinkReferences:i5},s5="hh-sol-artifact-1",r5="ERC20VariableCriteriaIncentiveV2",p5="contracts/incentives/ERC20VariableCriteriaIncentiveV2.sol",o5=[{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"},{indexed:!1,internalType:"uint256",name:"maxReward",type:"uint256"},{components:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"enum ValueType",name:"valueType",type:"uint8"}],indexed:!1,internalType:"struct AERC20VariableCriteriaIncentiveV2.IncentiveCriteria",name:"criteria",type:"tuple"}],name:"ERC20VariableCriteriaIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC20VariableIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ToppedUp",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"getIncentiveCriteria",outputs:[{components:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"enum ValueType",name:"valueType",type:"uint8"}],internalType:"struct AERC20VariableCriteriaIncentiveV2.IncentiveCriteria",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getMaxReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"incentiveCriteria",outputs:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"enum ValueType",name:"valueType",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"maxReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",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:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"topup",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"totalClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],u5="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6121a3806100895f395ff3fe608060405260043610610277575f3560e01c8063715018a61161014b578063c884ef83116100c6578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b1461071f578063fe9fbb8014610732578063fee81cf414610751575f80fd5b8063ec87621c146106f8578063f04e283e1461070c575f80fd5b8063db09da12116100ac578063db09da12146106a5578063dcc21361146106c4578063dcc59b6f146106e3575f80fd5b8063c884ef8314610662578063d54ad2a114610690575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf14610610578063be4994f81461062f578063c213f3f91461064e575f80fd5b8063a4d66daf146105da578063a871ced2146105ef575f80fd5b8063715018a61461053857806375b238fc1461054057806377548687146105545780638da5cb5b146105c2575f80fd5b806330db555f116101f55780634a4ee7b1116101ab578063514e62fc11610191578063514e62fc146104e657806354d1f13d1461051b57806366a78e6c14610523575f80fd5b80634a4ee7b1146104a75780634e7165a2146104ba575f80fd5b80634359d28a116101db5780634359d28a14610420578063439fab911461043f578063474f5a441461045e575f80fd5b806330db555f146103b057806338d52e0f146103cf575f80fd5b80631cd64df41161024a5780632569296211610230578063256929621461033d57806328d6183b146103455780632de948071461037f575f80fd5b80631cd64df4146102f4578063228cb73314610329575f80fd5b806301ffc9a71461027b57806307621eca146102af578063183a4f6e146102cc5780631c10893f146102e1575b5f80fd5b348015610286575f80fd5b5061029a6102953660046118d1565b610782565b60405190151581526020015b60405180910390f35b3480156102ba575f80fd5b505f545b6040519081526020016102a6565b6102df6102da366004611917565b6107dd565b005b6102df6102ef36600461194f565b6107ea565b3480156102ff575f80fd5b5061029a61030e36600461194f565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610334575f80fd5b506102be5f5481565b6102df610800565b348015610350575f80fd5b506040517f52b8e45c0000000000000000000000000000000000000000000000000000000081526020016102a6565b34801561038a575f80fd5b506102be610399366004611979565b638b78c6d8600c9081525f91909152602090205490565b3480156103bb575f80fd5b506102df6103ca366004611917565b61084d565b3480156103da575f80fd5b506003546103fb9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102a6565b34801561042b575f80fd5b506102df61043a3660046119dc565b610909565b34801561044a575f80fd5b506102df610459366004611a86565b610a03565b348015610469575f80fd5b5061047d610478366004611a86565b610d4c565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102a6565b6102df6104b536600461194f565b610eae565b3480156104c5575f80fd5b506104d96104d4366004611a86565b610ec0565b6040516102a69190611b11565b3480156104f1575f80fd5b5061029a61050036600461194f565b638b78c6d8600c9081525f9290925260209091205416151590565b6102df610fa9565b34801561052e575f80fd5b506102be60065481565b6102df610fe2565b34801561054b575f80fd5b506102be600281565b34801561055f575f80fd5b506007546008546009546105b19260ff90811692918082169173ffffffffffffffffffffffffffffffffffffffff61010083041691750100000000000000000000000000000000000000000090041685565b6040516102a6959493929190611b60565b3480156105cd575f80fd5b50638b78c6d819546103fb565b3480156105e5575f80fd5b506102be60025481565b3480156105fa575f80fd5b50610603610ff5565b6040516102a69190611c13565b34801561061b575f80fd5b5061029a61062a366004611c21565b6110db565b34801561063a575f80fd5b506102df6106493660046119dc565b61130c565b348015610659575f80fd5b506006546102be565b34801561066d575f80fd5b5061029a61067c366004611979565b60016020525f908152604090205460ff1681565b34801561069b575f80fd5b506102be60055481565b3480156106b0575f80fd5b5061029a6106bf366004611c21565b6113aa565b3480156106cf575f80fd5b506102df6106de3660046119dc565b6113c0565b3480156106ee575f80fd5b506102be60045481565b348015610703575f80fd5b506102be600181565b6102df61071a366004611979565b61145e565b6102df61072d366004611979565b611498565b34801561073d575f80fd5b5061029a61074c366004611979565b6114be565b34801561075c575f80fd5b506102be61076b366004611979565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f52b8e45c0000000000000000000000000000000000000000000000000000000014806107d757506107d78261151d565b92915050565b6107e73382611572565b50565b6107f261157d565b6107fc8282611597565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6001610858816115a3565b815f03610891576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546108b69073ffffffffffffffffffffffffffffffffffffffff163330856115d4565b8160025f8282546108c79190611c9f565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b6002610914816115a3565b83821461094d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109fb575f84848381811061096a5761096a611cb2565b905060200201602081019061097f9190611cdf565b90508015156001036109c1576109bc8787848181106109a0576109a0611cb2565b90506020020160208101906109b59190611979565b6001611597565b6109f2565b6109f28787848181106109d6576109d6611cb2565b90506020020160208101906109eb9190611979565b6001611572565b5060010161094f565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610a545760018160011c14303b10610a4b5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610a6283850185611d93565b805160208201516040830151606084015160808501519495509293919290915f839003610abb576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610adc73ffffffffffffffffffffffffffffffffffffffff871630611636565b905083811015610b455786516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810185905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff88161790555f8581556002859055600684905560055581516007805484929082907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610bd657610bd6611b23565b021790555060208201516001808301919091556040830151600283018054606086015173ffffffffffffffffffffffffffffffffffffffff16610100027fffffffffffffffffffffff00000000000000000000000000000000000000000090911660ff90931692909217919091178082556080850151927fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff909116907501000000000000000000000000000000000000000000908490811115610c9b57610c9b611b23565b0217905550905050610cac33611669565b610cb73360016116b1565b8573ffffffffffffffffffffffffffffffffffffffff167f99f3346dc2b5f4a8773b860bf7951f6bcb1a5ff787cfd080496e347c1ad5807986868686604051610d039493929190611e7b565b60405180910390a2505050505050508015610d47576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610d59816115a3565b5f610d6685870187611f50565b90505f8160200151806020019051810190610d819190611fcf565b90508060025f828254610d949190611fe6565b90915550508151600354610dc19173ffffffffffffffffffffffffffffffffffffffff90911690836116f2565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610e7f91611b11565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610eb661157d565b6107fc8282611572565b60605f80610ed084860186611ff9565b9250509150604051806080016040528060016002811115610ef357610ef3611b23565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610f529151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610f90919060200161202b565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610fea61157d565b610ff35f611745565b565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040805160a0810190915260078054829060ff16600181111561104457611044611b23565b600181111561105557611055611b23565b81526001828101546020830152600283015460ff808216604085015273ffffffffffffffffffffffffffffffffffffffff6101008304166060850152608090930192750100000000000000000000000000000000000000000090910416908111156110c2576110c2611b23565b60018111156110d3576110d3611b23565b905250919050565b5f6110e461157d565b5f6110f1838501856120a1565b90505f816020015180602001905181019061110c9190611fcf565b90505f61111c6002546005541090565b611152576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f03611161575080611184565b670de0b6b3a7640000825f54611177919061211e565b6111819190612135565b90505b60065415801590611196575060065481115b156111a057506006545b600254816005546111b19190611c9f565b11156111e9576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546111fa9190611c9f565b92505081905550600160045f8282546112139190611c9f565b909155505060035461123c9073ffffffffffffffffffffffffffffffffffffffff1688836116f2565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526112f791611b11565b60405180910390a25060019695505050505050565b6002611317816115a3565b838214611350576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109fb576113a286868381811061136f5761136f611cb2565b90506020020160208101906113849190611979565b85858481811061139657611396611cb2565b90506020020135611597565b600101611352565b5f6113b86002546005541090565b949350505050565b60026113cb816115a3565b838214611404576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109fb5761145686868381811061142357611423611cb2565b90506020020160208101906114389190611979565b85858481811061144a5761144a611cb2565b90506020020135611572565b600101611406565b61146661157d565b63389a75e1600c52805f526020600c20805442111561148c57636f5e88185f526004601cfd5b5f90556107e781611745565b6114a061157d565b8060601b6114b557637448fbae5f526004601cfd5b6107e781611745565b5f8173ffffffffffffffffffffffffffffffffffffffff166114e3638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107d75750638b78c6d8600c9081525f839052602090205460031615156107d7565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806107d757506107d78261178f565b6107fc82825f6117e4565b638b78c6d819543314610ff3576382b429005f526004601cfd5b6107fc828260016117e4565b638b78c6d8195433146107e757638b78c6d8600c52335f52806020600c2054166107e7576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f51141661162857803d873b15171061162857637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f51141661173b57803d853b15171061173b576390b8ec185f526004601cfd5b505f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806107d757506107d78261183b565b638b78c6d8600c52825f526020600c20805483811783611805575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806107d757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107d7565b5f602082840312156118e1575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611910575f80fd5b9392505050565b5f60208284031215611927575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146107e7575f80fd5b5f8060408385031215611960575f80fd5b823561196b8161192e565b946020939093013593505050565b5f60208284031215611989575f80fd5b81356119108161192e565b5f8083601f8401126119a4575f80fd5b50813567ffffffffffffffff8111156119bb575f80fd5b6020830191508360208260051b85010111156119d5575f80fd5b9250929050565b5f805f80604085870312156119ef575f80fd5b843567ffffffffffffffff811115611a05575f80fd5b611a1187828801611994565b909550935050602085013567ffffffffffffffff811115611a30575f80fd5b611a3c87828801611994565b95989497509550505050565b5f8083601f840112611a58575f80fd5b50813567ffffffffffffffff811115611a6f575f80fd5b6020830191508360208285010111156119d5575f80fd5b5f8060208385031215611a97575f80fd5b823567ffffffffffffffff811115611aad575f80fd5b611ab985828601611a48565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6119106020830184611ac5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106107e7576107e7611b23565b60a08101611b6d87611b50565b86825285602083015260ff8516604083015273ffffffffffffffffffffffffffffffffffffffff84166060830152611ba483611b50565b8260808301529695505050505050565b8051611bbf81611b50565b808352506020810151602083015260ff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff60608201511660608301526080810151611c0881611b50565b806080840152505050565b60a081016107d78284611bb4565b5f805f60408486031215611c33575f80fd5b8335611c3e8161192e565b9250602084013567ffffffffffffffff811115611c59575f80fd5b611c6586828701611a48565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156107d7576107d7611c72565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611cef575f80fd5b81358015158114611910575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611d4e57611d4e611cfe565b60405290565b6040805190810167ffffffffffffffff81118282101715611d4e57611d4e611cfe565b600281106107e7575f80fd5b8035611d8e81611d77565b919050565b5f81830361012081128015611da6575f80fd5b50611daf611d2b565b8335611dba8161192e565b815260208481013590820152604080850135908201526060808501359082015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083011215611e09575f80fd5b611e11611d2b565b91506080840135611e2181611d77565b825260a0840135602083015260c084013560ff81168114611e40575f80fd5b604083015260e0840135611e538161192e565b6060830152611e656101008501611d83565b6080830152816080820152809250505092915050565b84815260208101849052604081018390526101008101611e9e6060830184611bb4565b95945050505050565b5f82601f830112611eb6575f80fd5b813567ffffffffffffffff811115611ed057611ed0611cfe565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715611f1d57611f1d611cfe565b604052818152838201602001851015611f34575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611f60575f80fd5b813567ffffffffffffffff811115611f76575f80fd5b820160408185031215611f87575f80fd5b611f8f611d54565b8135611f9a8161192e565b8152602082013567ffffffffffffffff811115611fb5575f80fd5b611fc186828501611ea7565b602083015250949350505050565b5f60208284031215611fdf575f80fd5b5051919050565b818103818111156107d7576107d7611c72565b5f805f6060848603121561200b575f80fd5b83356120168161192e565b95602085013595506040909401359392505050565b602081525f82516003811061204257612042611b23565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526113b860a0840182611ac5565b5f602082840312156120b1575f80fd5b813567ffffffffffffffff8111156120c7575f80fd5b8201604081850312156120d8575f80fd5b6120e0611d54565b813567ffffffffffffffff8111156120f6575f80fd5b61210286828501611ea7565b825250602082013567ffffffffffffffff811115611fb5575f80fd5b80820281158282048414176107d7576107d7611c72565b5f82612168577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea26469706673582212207116aaa186a239a48bef990e22553b4fb13a51ab4a37e95e74ae15e63a94b2e764736f6c634300081a0033",y5="0x608060405260043610610277575f3560e01c8063715018a61161014b578063c884ef83116100c6578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b1461071f578063fe9fbb8014610732578063fee81cf414610751575f80fd5b8063ec87621c146106f8578063f04e283e1461070c575f80fd5b8063db09da12116100ac578063db09da12146106a5578063dcc21361146106c4578063dcc59b6f146106e3575f80fd5b8063c884ef8314610662578063d54ad2a114610690575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf14610610578063be4994f81461062f578063c213f3f91461064e575f80fd5b8063a4d66daf146105da578063a871ced2146105ef575f80fd5b8063715018a61461053857806375b238fc1461054057806377548687146105545780638da5cb5b146105c2575f80fd5b806330db555f116101f55780634a4ee7b1116101ab578063514e62fc11610191578063514e62fc146104e657806354d1f13d1461051b57806366a78e6c14610523575f80fd5b80634a4ee7b1146104a75780634e7165a2146104ba575f80fd5b80634359d28a116101db5780634359d28a14610420578063439fab911461043f578063474f5a441461045e575f80fd5b806330db555f146103b057806338d52e0f146103cf575f80fd5b80631cd64df41161024a5780632569296211610230578063256929621461033d57806328d6183b146103455780632de948071461037f575f80fd5b80631cd64df4146102f4578063228cb73314610329575f80fd5b806301ffc9a71461027b57806307621eca146102af578063183a4f6e146102cc5780631c10893f146102e1575b5f80fd5b348015610286575f80fd5b5061029a6102953660046118d1565b610782565b60405190151581526020015b60405180910390f35b3480156102ba575f80fd5b505f545b6040519081526020016102a6565b6102df6102da366004611917565b6107dd565b005b6102df6102ef36600461194f565b6107ea565b3480156102ff575f80fd5b5061029a61030e36600461194f565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610334575f80fd5b506102be5f5481565b6102df610800565b348015610350575f80fd5b506040517f52b8e45c0000000000000000000000000000000000000000000000000000000081526020016102a6565b34801561038a575f80fd5b506102be610399366004611979565b638b78c6d8600c9081525f91909152602090205490565b3480156103bb575f80fd5b506102df6103ca366004611917565b61084d565b3480156103da575f80fd5b506003546103fb9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102a6565b34801561042b575f80fd5b506102df61043a3660046119dc565b610909565b34801561044a575f80fd5b506102df610459366004611a86565b610a03565b348015610469575f80fd5b5061047d610478366004611a86565b610d4c565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102a6565b6102df6104b536600461194f565b610eae565b3480156104c5575f80fd5b506104d96104d4366004611a86565b610ec0565b6040516102a69190611b11565b3480156104f1575f80fd5b5061029a61050036600461194f565b638b78c6d8600c9081525f9290925260209091205416151590565b6102df610fa9565b34801561052e575f80fd5b506102be60065481565b6102df610fe2565b34801561054b575f80fd5b506102be600281565b34801561055f575f80fd5b506007546008546009546105b19260ff90811692918082169173ffffffffffffffffffffffffffffffffffffffff61010083041691750100000000000000000000000000000000000000000090041685565b6040516102a6959493929190611b60565b3480156105cd575f80fd5b50638b78c6d819546103fb565b3480156105e5575f80fd5b506102be60025481565b3480156105fa575f80fd5b50610603610ff5565b6040516102a69190611c13565b34801561061b575f80fd5b5061029a61062a366004611c21565b6110db565b34801561063a575f80fd5b506102df6106493660046119dc565b61130c565b348015610659575f80fd5b506006546102be565b34801561066d575f80fd5b5061029a61067c366004611979565b60016020525f908152604090205460ff1681565b34801561069b575f80fd5b506102be60055481565b3480156106b0575f80fd5b5061029a6106bf366004611c21565b6113aa565b3480156106cf575f80fd5b506102df6106de3660046119dc565b6113c0565b3480156106ee575f80fd5b506102be60045481565b348015610703575f80fd5b506102be600181565b6102df61071a366004611979565b61145e565b6102df61072d366004611979565b611498565b34801561073d575f80fd5b5061029a61074c366004611979565b6114be565b34801561075c575f80fd5b506102be61076b366004611979565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f52b8e45c0000000000000000000000000000000000000000000000000000000014806107d757506107d78261151d565b92915050565b6107e73382611572565b50565b6107f261157d565b6107fc8282611597565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6001610858816115a3565b815f03610891576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546108b69073ffffffffffffffffffffffffffffffffffffffff163330856115d4565b8160025f8282546108c79190611c9f565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b6002610914816115a3565b83821461094d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109fb575f84848381811061096a5761096a611cb2565b905060200201602081019061097f9190611cdf565b90508015156001036109c1576109bc8787848181106109a0576109a0611cb2565b90506020020160208101906109b59190611979565b6001611597565b6109f2565b6109f28787848181106109d6576109d6611cb2565b90506020020160208101906109eb9190611979565b6001611572565b5060010161094f565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610a545760018160011c14303b10610a4b5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610a6283850185611d93565b805160208201516040830151606084015160808501519495509293919290915f839003610abb576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610adc73ffffffffffffffffffffffffffffffffffffffff871630611636565b905083811015610b455786516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810185905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff88161790555f8581556002859055600684905560055581516007805484929082907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610bd657610bd6611b23565b021790555060208201516001808301919091556040830151600283018054606086015173ffffffffffffffffffffffffffffffffffffffff16610100027fffffffffffffffffffffff00000000000000000000000000000000000000000090911660ff90931692909217919091178082556080850151927fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff909116907501000000000000000000000000000000000000000000908490811115610c9b57610c9b611b23565b0217905550905050610cac33611669565b610cb73360016116b1565b8573ffffffffffffffffffffffffffffffffffffffff167f99f3346dc2b5f4a8773b860bf7951f6bcb1a5ff787cfd080496e347c1ad5807986868686604051610d039493929190611e7b565b60405180910390a2505050505050508015610d47576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610d59816115a3565b5f610d6685870187611f50565b90505f8160200151806020019051810190610d819190611fcf565b90508060025f828254610d949190611fe6565b90915550508151600354610dc19173ffffffffffffffffffffffffffffffffffffffff90911690836116f2565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610e7f91611b11565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610eb661157d565b6107fc8282611572565b60605f80610ed084860186611ff9565b9250509150604051806080016040528060016002811115610ef357610ef3611b23565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610f529151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610f90919060200161202b565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610fea61157d565b610ff35f611745565b565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040805160a0810190915260078054829060ff16600181111561104457611044611b23565b600181111561105557611055611b23565b81526001828101546020830152600283015460ff808216604085015273ffffffffffffffffffffffffffffffffffffffff6101008304166060850152608090930192750100000000000000000000000000000000000000000090910416908111156110c2576110c2611b23565b60018111156110d3576110d3611b23565b905250919050565b5f6110e461157d565b5f6110f1838501856120a1565b90505f816020015180602001905181019061110c9190611fcf565b90505f61111c6002546005541090565b611152576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f03611161575080611184565b670de0b6b3a7640000825f54611177919061211e565b6111819190612135565b90505b60065415801590611196575060065481115b156111a057506006545b600254816005546111b19190611c9f565b11156111e9576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546111fa9190611c9f565b92505081905550600160045f8282546112139190611c9f565b909155505060035461123c9073ffffffffffffffffffffffffffffffffffffffff1688836116f2565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526112f791611b11565b60405180910390a25060019695505050505050565b6002611317816115a3565b838214611350576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109fb576113a286868381811061136f5761136f611cb2565b90506020020160208101906113849190611979565b85858481811061139657611396611cb2565b90506020020135611597565b600101611352565b5f6113b86002546005541090565b949350505050565b60026113cb816115a3565b838214611404576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109fb5761145686868381811061142357611423611cb2565b90506020020160208101906114389190611979565b85858481811061144a5761144a611cb2565b90506020020135611572565b600101611406565b61146661157d565b63389a75e1600c52805f526020600c20805442111561148c57636f5e88185f526004601cfd5b5f90556107e781611745565b6114a061157d565b8060601b6114b557637448fbae5f526004601cfd5b6107e781611745565b5f8173ffffffffffffffffffffffffffffffffffffffff166114e3638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107d75750638b78c6d8600c9081525f839052602090205460031615156107d7565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806107d757506107d78261178f565b6107fc82825f6117e4565b638b78c6d819543314610ff3576382b429005f526004601cfd5b6107fc828260016117e4565b638b78c6d8195433146107e757638b78c6d8600c52335f52806020600c2054166107e7576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f51141661162857803d873b15171061162857637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f51141661173b57803d853b15171061173b576390b8ec185f526004601cfd5b505f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806107d757506107d78261183b565b638b78c6d8600c52825f526020600c20805483811783611805575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806107d757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107d7565b5f602082840312156118e1575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611910575f80fd5b9392505050565b5f60208284031215611927575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146107e7575f80fd5b5f8060408385031215611960575f80fd5b823561196b8161192e565b946020939093013593505050565b5f60208284031215611989575f80fd5b81356119108161192e565b5f8083601f8401126119a4575f80fd5b50813567ffffffffffffffff8111156119bb575f80fd5b6020830191508360208260051b85010111156119d5575f80fd5b9250929050565b5f805f80604085870312156119ef575f80fd5b843567ffffffffffffffff811115611a05575f80fd5b611a1187828801611994565b909550935050602085013567ffffffffffffffff811115611a30575f80fd5b611a3c87828801611994565b95989497509550505050565b5f8083601f840112611a58575f80fd5b50813567ffffffffffffffff811115611a6f575f80fd5b6020830191508360208285010111156119d5575f80fd5b5f8060208385031215611a97575f80fd5b823567ffffffffffffffff811115611aad575f80fd5b611ab985828601611a48565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6119106020830184611ac5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106107e7576107e7611b23565b60a08101611b6d87611b50565b86825285602083015260ff8516604083015273ffffffffffffffffffffffffffffffffffffffff84166060830152611ba483611b50565b8260808301529695505050505050565b8051611bbf81611b50565b808352506020810151602083015260ff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff60608201511660608301526080810151611c0881611b50565b806080840152505050565b60a081016107d78284611bb4565b5f805f60408486031215611c33575f80fd5b8335611c3e8161192e565b9250602084013567ffffffffffffffff811115611c59575f80fd5b611c6586828701611a48565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156107d7576107d7611c72565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611cef575f80fd5b81358015158114611910575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611d4e57611d4e611cfe565b60405290565b6040805190810167ffffffffffffffff81118282101715611d4e57611d4e611cfe565b600281106107e7575f80fd5b8035611d8e81611d77565b919050565b5f81830361012081128015611da6575f80fd5b50611daf611d2b565b8335611dba8161192e565b815260208481013590820152604080850135908201526060808501359082015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083011215611e09575f80fd5b611e11611d2b565b91506080840135611e2181611d77565b825260a0840135602083015260c084013560ff81168114611e40575f80fd5b604083015260e0840135611e538161192e565b6060830152611e656101008501611d83565b6080830152816080820152809250505092915050565b84815260208101849052604081018390526101008101611e9e6060830184611bb4565b95945050505050565b5f82601f830112611eb6575f80fd5b813567ffffffffffffffff811115611ed057611ed0611cfe565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715611f1d57611f1d611cfe565b604052818152838201602001851015611f34575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611f60575f80fd5b813567ffffffffffffffff811115611f76575f80fd5b820160408185031215611f87575f80fd5b611f8f611d54565b8135611f9a8161192e565b8152602082013567ffffffffffffffff811115611fb5575f80fd5b611fc186828501611ea7565b602083015250949350505050565b5f60208284031215611fdf575f80fd5b5051919050565b818103818111156107d7576107d7611c72565b5f805f6060848603121561200b575f80fd5b83356120168161192e565b95602085013595506040909401359392505050565b602081525f82516003811061204257612042611b23565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526113b860a0840182611ac5565b5f602082840312156120b1575f80fd5b813567ffffffffffffffff8111156120c7575f80fd5b8201604081850312156120d8575f80fd5b6120e0611d54565b813567ffffffffffffffff8111156120f6575f80fd5b61210286828501611ea7565b825250602082013567ffffffffffffffff811115611fb5575f80fd5b80820281158282048414176107d7576107d7611c72565b5f82612168577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea26469706673582212207116aaa186a239a48bef990e22553b4fb13a51ab4a37e95e74ae15e63a94b2e764736f6c634300081a0033",l5={},m5={},S0={_format:s5,contractName:r5,sourceName:p5,abi:o5,bytecode:u5,deployedBytecode:y5,linkReferences:l5,deployedLinkReferences:m5},T5="hh-sol-artifact-1",w5="ERC20VariableIncentive",h5="contracts/incentives/ERC20VariableIncentive.sol",v5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC20VariableIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ToppedUp",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",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:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"topup",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"totalClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],g5="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611c81806100895f395ff3fe60806040526004361061020f575f3560e01c806354d1f13d11610117578063d54ad2a1116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105ff578063fe9fbb8014610612578063fee81cf414610631575f80fd5b8063ec87621c146105d8578063f04e283e146105ec575f80fd5b8063d54ad2a114610570578063db09da1214610585578063dcc21361146105a4578063dcc59b6f146105c3575f80fd5b8063a4d66daf116100e7578063a4d66daf146104ef578063bb1757cf14610504578063be4994f814610523578063c884ef8314610542575f80fd5b806354d1f13d146104b3578063715018a6146104bb57806375b238fc146104c35780638da5cb5b146104d7575f80fd5b80632de94807116101a7578063439fab91116101775780634a4ee7b11161015d5780634a4ee7b11461043f5780634e7165a214610452578063514e62fc1461047e575f80fd5b8063439fab91146103d7578063474f5a44146103f6575f80fd5b80632de948071461031757806330db555f1461034857806338d52e0f146103675780634359d28a146103b8575f80fd5b80631cd64df4116101e25780631cd64df41461028c578063228cb733146102c157806325692962146102d557806328d6183b146102dd575f80fd5b806301ffc9a71461021357806307621eca14610247578063183a4f6e146102645780631c10893f14610279575b5f80fd5b34801561021e575f80fd5b5061023261022d36600461153b565b610662565b60405190151581526020015b60405180910390f35b348015610252575f80fd5b505f545b60405190815260200161023e565b610277610272366004611581565b6106bd565b005b6102776102873660046115b9565b6106ca565b348015610297575f80fd5b506102326102a63660046115b9565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102cc575f80fd5b506102565f5481565b6102776106e0565b3480156102e8575f80fd5b506040517f9031811100000000000000000000000000000000000000000000000000000000815260200161023e565b348015610322575f80fd5b506102566103313660046115e3565b638b78c6d8600c9081525f91909152602090205490565b348015610353575f80fd5b50610277610362366004611581565b61072d565b348015610372575f80fd5b506003546103939073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161023e565b3480156103c3575f80fd5b506102776103d2366004611646565b6107e9565b3480156103e2575f80fd5b506102776103f13660046116f0565b6108e3565b348015610401575f80fd5b506104156104103660046116f0565b610b0d565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161023e565b61027761044d3660046115b9565b610c6f565b34801561045d575f80fd5b5061047161046c3660046116f0565b610c81565b60405161023e919061177b565b348015610489575f80fd5b506102326104983660046115b9565b638b78c6d8600c9081525f9290925260209091205416151590565b610277610d6a565b610277610da3565b3480156104ce575f80fd5b50610256600281565b3480156104e2575f80fd5b50638b78c6d81954610393565b3480156104fa575f80fd5b5061025660025481565b34801561050f575f80fd5b5061023261051e36600461178d565b610db6565b34801561052e575f80fd5b5061027761053d366004611646565b610fcb565b34801561054d575f80fd5b5061023261055c3660046115e3565b60016020525f908152604090205460ff1681565b34801561057b575f80fd5b5061025660055481565b348015610590575f80fd5b5061023261059f36600461178d565b611069565b3480156105af575f80fd5b506102776105be366004611646565b61107f565b3480156105ce575f80fd5b5061025660045481565b3480156105e3575f80fd5b50610256600181565b6102776105fa3660046115e3565b61111d565b61027761060d3660046115e3565b611157565b34801561061d575f80fd5b5061023261062c3660046115e3565b61117d565b34801561063c575f80fd5b5061025661064b3660046115e3565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806106b757506106b7826111dc565b92915050565b6106c73382611231565b50565b6106d261123c565b6106dc8282611256565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161073881611262565b815f03610771576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546107969073ffffffffffffffffffffffffffffffffffffffff16333085611293565b8160025f8282546107a7919061180b565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b60026107f481611262565b83821461082d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db575f84848381811061084a5761084a61181e565b905060200201602081019061085f919061184b565b90508015156001036108a15761089c8787848181106108805761088061181e565b905060200201602081019061089591906115e3565b6001611256565b6108d2565b6108d28787848181106108b6576108b661181e565b90506020020160208101906108cb91906115e3565b6001611231565b5060010161082f565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109345760018160011c14303b1061092b5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610942838501856118c0565b80516020820151604083015192935090915f81900361098d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109ae73ffffffffffffffffffffffffffffffffffffffff8516306112f5565b905081811015610a175784516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810183905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555f8381556002839055600555610a6c33611328565b6060850151610a7c816001611370565b604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff8716917fac711f624f923566afa4d63e74d67927870a724791c9569f0143ddea22657a0d910160405180910390a25050505050508015610b08576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b1a81611262565b5f610b27858701876119dc565b90505f8160200151806020019051810190610b429190611a5b565b90508060025f828254610b559190611a72565b90915550508151600354610b829173ffffffffffffffffffffffffffffffffffffffff90911690836113b1565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c409161177b565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c7761123c565b6106dc8282611231565b60605f80610c9184860186611a85565b9250509150604051806080016040528060016002811115610cb457610cb4611ab7565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610d139151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610d519190602001611ae4565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610dab61123c565b610db45f611404565b565b5f610dbf61123c565b5f610dcc83850185611b7f565b90505f8160200151806020019051810190610de79190611a5b565b90505f610df76002546005541090565b610e2d576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f03610e3c575080610e5f565b670de0b6b3a7640000825f54610e529190611bfc565b610e5c9190611c13565b90505b60025481600554610e70919061180b565b1115610ea8576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610eb9919061180b565b92505081905550600160045f828254610ed2919061180b565b9091555050600354610efb9073ffffffffffffffffffffffffffffffffffffffff1688836113b1565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fb69161177b565b60405180910390a25060019695505050505050565b6002610fd681611262565b83821461100f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db5761106186868381811061102e5761102e61181e565b905060200201602081019061104391906115e3565b8585848181106110555761105561181e565b90506020020135611256565b600101611011565b5f6110776002546005541090565b949350505050565b600261108a81611262565b8382146110c3576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db576111158686838181106110e2576110e261181e565b90506020020160208101906110f791906115e3565b8585848181106111095761110961181e565b90506020020135611231565b6001016110c5565b61112561123c565b63389a75e1600c52805f526020600c20805442111561114b57636f5e88185f526004601cfd5b5f90556106c781611404565b61115f61123c565b8060601b61117457637448fbae5f526004601cfd5b6106c781611404565b5f8173ffffffffffffffffffffffffffffffffffffffff166111a2638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b75750638b78c6d8600c9081525f839052602090205460031615156106b7565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b757506106b78261144e565b6106dc82825f6114e4565b638b78c6d819543314610db4576382b429005f526004601cfd5b6106dc828260016114e4565b638b78c6d8195433146106c757638b78c6d8600c52335f52806020600c2054166106c7576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f5114166112e757803d873b1517106112e757637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f5114166113fa57803d853b1517106113fa576390b8ec185f526004601cfd5b505f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b7565b638b78c6d8600c52825f526020600c20805483811783611505575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f6020828403121561154b575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461157a575f80fd5b9392505050565b5f60208284031215611591575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146106c7575f80fd5b5f80604083850312156115ca575f80fd5b82356115d581611598565b946020939093013593505050565b5f602082840312156115f3575f80fd5b813561157a81611598565b5f8083601f84011261160e575f80fd5b50813567ffffffffffffffff811115611625575f80fd5b6020830191508360208260051b850101111561163f575f80fd5b9250929050565b5f805f8060408587031215611659575f80fd5b843567ffffffffffffffff81111561166f575f80fd5b61167b878288016115fe565b909550935050602085013567ffffffffffffffff81111561169a575f80fd5b6116a6878288016115fe565b95989497509550505050565b5f8083601f8401126116c2575f80fd5b50813567ffffffffffffffff8111156116d9575f80fd5b60208301915083602082850101111561163f575f80fd5b5f8060208385031215611701575f80fd5b823567ffffffffffffffff811115611717575f80fd5b611723858286016116b2565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61157a602083018461172f565b5f805f6040848603121561179f575f80fd5b83356117aa81611598565b9250602084013567ffffffffffffffff8111156117c5575f80fd5b6117d1868287016116b2565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156106b7576106b76117de565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561185b575f80fd5b8135801515811461157a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118ba576118ba61186a565b60405290565b5f60808284031280156118d1575f80fd5b506040516080810167ffffffffffffffff811182821017156118f5576118f561186a565b604052823561190381611598565b81526020838101359082015260408084013590820152606083013561192781611598565b60608201529392505050565b5f82601f830112611942575f80fd5b813567ffffffffffffffff81111561195c5761195c61186a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156119a9576119a961186a565b6040528181528382016020018510156119c0575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156119ec575f80fd5b813567ffffffffffffffff811115611a02575f80fd5b820160408185031215611a13575f80fd5b611a1b611897565b8135611a2681611598565b8152602082013567ffffffffffffffff811115611a41575f80fd5b611a4d86828501611933565b602083015250949350505050565b5f60208284031215611a6b575f80fd5b5051919050565b818103818111156106b7576106b76117de565b5f805f60608486031215611a97575f80fd5b8335611aa281611598565b95602085013595506040909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b602081525f825160038110611b20577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261107760a084018261172f565b5f60208284031215611b8f575f80fd5b813567ffffffffffffffff811115611ba5575f80fd5b820160408185031215611bb6575f80fd5b611bbe611897565b813567ffffffffffffffff811115611bd4575f80fd5b611be086828501611933565b825250602082013567ffffffffffffffff811115611a41575f80fd5b80820281158282048414176106b7576106b76117de565b5f82611c46577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea26469706673582212205e41329b8669298aefff890a8927080492625f551d3bee91b84e42a63b00ed0664736f6c634300081a0033",M5="0x60806040526004361061020f575f3560e01c806354d1f13d11610117578063d54ad2a1116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105ff578063fe9fbb8014610612578063fee81cf414610631575f80fd5b8063ec87621c146105d8578063f04e283e146105ec575f80fd5b8063d54ad2a114610570578063db09da1214610585578063dcc21361146105a4578063dcc59b6f146105c3575f80fd5b8063a4d66daf116100e7578063a4d66daf146104ef578063bb1757cf14610504578063be4994f814610523578063c884ef8314610542575f80fd5b806354d1f13d146104b3578063715018a6146104bb57806375b238fc146104c35780638da5cb5b146104d7575f80fd5b80632de94807116101a7578063439fab91116101775780634a4ee7b11161015d5780634a4ee7b11461043f5780634e7165a214610452578063514e62fc1461047e575f80fd5b8063439fab91146103d7578063474f5a44146103f6575f80fd5b80632de948071461031757806330db555f1461034857806338d52e0f146103675780634359d28a146103b8575f80fd5b80631cd64df4116101e25780631cd64df41461028c578063228cb733146102c157806325692962146102d557806328d6183b146102dd575f80fd5b806301ffc9a71461021357806307621eca14610247578063183a4f6e146102645780631c10893f14610279575b5f80fd5b34801561021e575f80fd5b5061023261022d36600461153b565b610662565b60405190151581526020015b60405180910390f35b348015610252575f80fd5b505f545b60405190815260200161023e565b610277610272366004611581565b6106bd565b005b6102776102873660046115b9565b6106ca565b348015610297575f80fd5b506102326102a63660046115b9565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102cc575f80fd5b506102565f5481565b6102776106e0565b3480156102e8575f80fd5b506040517f9031811100000000000000000000000000000000000000000000000000000000815260200161023e565b348015610322575f80fd5b506102566103313660046115e3565b638b78c6d8600c9081525f91909152602090205490565b348015610353575f80fd5b50610277610362366004611581565b61072d565b348015610372575f80fd5b506003546103939073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161023e565b3480156103c3575f80fd5b506102776103d2366004611646565b6107e9565b3480156103e2575f80fd5b506102776103f13660046116f0565b6108e3565b348015610401575f80fd5b506104156104103660046116f0565b610b0d565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161023e565b61027761044d3660046115b9565b610c6f565b34801561045d575f80fd5b5061047161046c3660046116f0565b610c81565b60405161023e919061177b565b348015610489575f80fd5b506102326104983660046115b9565b638b78c6d8600c9081525f9290925260209091205416151590565b610277610d6a565b610277610da3565b3480156104ce575f80fd5b50610256600281565b3480156104e2575f80fd5b50638b78c6d81954610393565b3480156104fa575f80fd5b5061025660025481565b34801561050f575f80fd5b5061023261051e36600461178d565b610db6565b34801561052e575f80fd5b5061027761053d366004611646565b610fcb565b34801561054d575f80fd5b5061023261055c3660046115e3565b60016020525f908152604090205460ff1681565b34801561057b575f80fd5b5061025660055481565b348015610590575f80fd5b5061023261059f36600461178d565b611069565b3480156105af575f80fd5b506102776105be366004611646565b61107f565b3480156105ce575f80fd5b5061025660045481565b3480156105e3575f80fd5b50610256600181565b6102776105fa3660046115e3565b61111d565b61027761060d3660046115e3565b611157565b34801561061d575f80fd5b5061023261062c3660046115e3565b61117d565b34801561063c575f80fd5b5061025661064b3660046115e3565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806106b757506106b7826111dc565b92915050565b6106c73382611231565b50565b6106d261123c565b6106dc8282611256565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161073881611262565b815f03610771576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546107969073ffffffffffffffffffffffffffffffffffffffff16333085611293565b8160025f8282546107a7919061180b565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b60026107f481611262565b83821461082d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db575f84848381811061084a5761084a61181e565b905060200201602081019061085f919061184b565b90508015156001036108a15761089c8787848181106108805761088061181e565b905060200201602081019061089591906115e3565b6001611256565b6108d2565b6108d28787848181106108b6576108b661181e565b90506020020160208101906108cb91906115e3565b6001611231565b5060010161082f565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109345760018160011c14303b1061092b5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610942838501856118c0565b80516020820151604083015192935090915f81900361098d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109ae73ffffffffffffffffffffffffffffffffffffffff8516306112f5565b905081811015610a175784516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810183905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555f8381556002839055600555610a6c33611328565b6060850151610a7c816001611370565b604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff8716917fac711f624f923566afa4d63e74d67927870a724791c9569f0143ddea22657a0d910160405180910390a25050505050508015610b08576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b1a81611262565b5f610b27858701876119dc565b90505f8160200151806020019051810190610b429190611a5b565b90508060025f828254610b559190611a72565b90915550508151600354610b829173ffffffffffffffffffffffffffffffffffffffff90911690836113b1565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c409161177b565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c7761123c565b6106dc8282611231565b60605f80610c9184860186611a85565b9250509150604051806080016040528060016002811115610cb457610cb4611ab7565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610d139151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610d519190602001611ae4565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610dab61123c565b610db45f611404565b565b5f610dbf61123c565b5f610dcc83850185611b7f565b90505f8160200151806020019051810190610de79190611a5b565b90505f610df76002546005541090565b610e2d576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f03610e3c575080610e5f565b670de0b6b3a7640000825f54610e529190611bfc565b610e5c9190611c13565b90505b60025481600554610e70919061180b565b1115610ea8576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610eb9919061180b565b92505081905550600160045f828254610ed2919061180b565b9091555050600354610efb9073ffffffffffffffffffffffffffffffffffffffff1688836113b1565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fb69161177b565b60405180910390a25060019695505050505050565b6002610fd681611262565b83821461100f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db5761106186868381811061102e5761102e61181e565b905060200201602081019061104391906115e3565b8585848181106110555761105561181e565b90506020020135611256565b600101611011565b5f6110776002546005541090565b949350505050565b600261108a81611262565b8382146110c3576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db576111158686838181106110e2576110e261181e565b90506020020160208101906110f791906115e3565b8585848181106111095761110961181e565b90506020020135611231565b6001016110c5565b61112561123c565b63389a75e1600c52805f526020600c20805442111561114b57636f5e88185f526004601cfd5b5f90556106c781611404565b61115f61123c565b8060601b61117457637448fbae5f526004601cfd5b6106c781611404565b5f8173ffffffffffffffffffffffffffffffffffffffff166111a2638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b75750638b78c6d8600c9081525f839052602090205460031615156106b7565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b757506106b78261144e565b6106dc82825f6114e4565b638b78c6d819543314610db4576382b429005f526004601cfd5b6106dc828260016114e4565b638b78c6d8195433146106c757638b78c6d8600c52335f52806020600c2054166106c7576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f5114166112e757803d873b1517106112e757637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f5114166113fa57803d853b1517106113fa576390b8ec185f526004601cfd5b505f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b7565b638b78c6d8600c52825f526020600c20805483811783611505575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f6020828403121561154b575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461157a575f80fd5b9392505050565b5f60208284031215611591575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146106c7575f80fd5b5f80604083850312156115ca575f80fd5b82356115d581611598565b946020939093013593505050565b5f602082840312156115f3575f80fd5b813561157a81611598565b5f8083601f84011261160e575f80fd5b50813567ffffffffffffffff811115611625575f80fd5b6020830191508360208260051b850101111561163f575f80fd5b9250929050565b5f805f8060408587031215611659575f80fd5b843567ffffffffffffffff81111561166f575f80fd5b61167b878288016115fe565b909550935050602085013567ffffffffffffffff81111561169a575f80fd5b6116a6878288016115fe565b95989497509550505050565b5f8083601f8401126116c2575f80fd5b50813567ffffffffffffffff8111156116d9575f80fd5b60208301915083602082850101111561163f575f80fd5b5f8060208385031215611701575f80fd5b823567ffffffffffffffff811115611717575f80fd5b611723858286016116b2565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61157a602083018461172f565b5f805f6040848603121561179f575f80fd5b83356117aa81611598565b9250602084013567ffffffffffffffff8111156117c5575f80fd5b6117d1868287016116b2565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156106b7576106b76117de565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561185b575f80fd5b8135801515811461157a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118ba576118ba61186a565b60405290565b5f60808284031280156118d1575f80fd5b506040516080810167ffffffffffffffff811182821017156118f5576118f561186a565b604052823561190381611598565b81526020838101359082015260408084013590820152606083013561192781611598565b60608201529392505050565b5f82601f830112611942575f80fd5b813567ffffffffffffffff81111561195c5761195c61186a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156119a9576119a961186a565b6040528181528382016020018510156119c0575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156119ec575f80fd5b813567ffffffffffffffff811115611a02575f80fd5b820160408185031215611a13575f80fd5b611a1b611897565b8135611a2681611598565b8152602082013567ffffffffffffffff811115611a41575f80fd5b611a4d86828501611933565b602083015250949350505050565b5f60208284031215611a6b575f80fd5b5051919050565b818103818111156106b7576106b76117de565b5f805f60608486031215611a97575f80fd5b8335611aa281611598565b95602085013595506040909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b602081525f825160038110611b20577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261107760a084018261172f565b5f60208284031215611b8f575f80fd5b813567ffffffffffffffff811115611ba5575f80fd5b820160408185031215611bb6575f80fd5b611bbe611897565b813567ffffffffffffffff811115611bd4575f80fd5b611be086828501611933565b825250602082013567ffffffffffffffff811115611a41575f80fd5b80820281158282048414176106b7576106b76117de565b5f82611c46577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea26469706673582212205e41329b8669298aefff890a8927080492625f551d3bee91b84e42a63b00ed0664736f6c634300081a0033",I5={},x5={},D0={_format:T5,contractName:w5,sourceName:h5,abi:v5,bytecode:g5,deployedBytecode:M5,linkReferences:I5,deployedLinkReferences:x5},A5="hh-sol-artifact-1",E5="ERC1155Incentive",R5="contracts/incentives/ERC1155Incentive.sol",O5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"enum AERC1155Incentive.Strategy",name:"strategy",type:"uint8"},{indexed:!1,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC1155IncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"extraData",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",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:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"strategy",outputs:[{internalType:"enum AERC1155Incentive.Strategy",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],C5="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612419806100895f395ff3fe60806040526004361061025d575f3560e01c8063609d33341161014b578063cc3c0f06116100c6578063f04e283e1161007c578063f2fde38b11610062578063f2fde38b14610719578063fe9fbb801461072c578063fee81cf41461074b575f80fd5b8063f04e283e146106c1578063f23a6e61146106d4575f80fd5b8063dcc21361116100ac578063dcc2136114610679578063dcc59b6f14610698578063ec87621c146106ad575f80fd5b8063cc3c0f061461062c578063db09da121461065a575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf146105a7578063bc197c81146105c6578063be4994f81461060d575f80fd5b8063a4d66daf1461056c578063a8c62e7614610581575f80fd5b8063609d333414610524578063715018a61461053857806375b238fc146105405780638da5cb5b14610554575f80fd5b80632de94807116101db578063474f5a44116101ab5780634e7165a2116101915780634e7165a2146104bb578063514e62fc146104e757806354d1f13d1461051c575f80fd5b8063474f5a441461045f5780634a4ee7b1146104a8575f80fd5b80632de948071461039f57806338d52e0f146103d05780634359d28a14610421578063439fab9114610440575f80fd5b80631c10893f11610230578063228cb73311610216578063228cb73314610324578063256929621461033857806328d6183b14610340575f80fd5b80631c10893f146102dc5780631cd64df4146102ef575f80fd5b806301ffc9a71461026157806307621eca1461029557806317d70f7c146102b2578063183a4f6e146102c7575b5f80fd5b34801561026c575f80fd5b5061028061027b366004611760565b61077c565b60405190151581526020015b60405180910390f35b3480156102a0575f80fd5b505f545b60405190815260200161028c565b3480156102bd575f80fd5b506102a460045481565b6102da6102d536600461179f565b610823565b005b6102da6102ea3660046117e7565b610830565b3480156102fa575f80fd5b506102806103093660046117e7565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561032f575f80fd5b506102a45f5481565b6102da610846565b34801561034b575f80fd5b507f9e4fa10b000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161028c565b3480156103aa575f80fd5b506102a46103b9366004611811565b638b78c6d8600c9081525f91909152602090205490565b3480156103db575f80fd5b506006546103fc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028c565b34801561042c575f80fd5b506102da61043b366004611874565b610893565b34801561044b575f80fd5b506102da61045a36600461191e565b61098d565b34801561046a575f80fd5b5061047e61047936600461191e565b610ced565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161028c565b6102da6104b63660046117e7565b610ede565b3480156104c6575f80fd5b506104da6104d536600461191e565b610ef0565b60405161028c919061198b565b3480156104f2575f80fd5b506102806105013660046117e7565b638b78c6d8600c9081525f9290925260209091205416151590565b6102da610fbf565b34801561052f575f80fd5b506104da610ff8565b6102da611084565b34801561054b575f80fd5b506102a4600281565b34801561055f575f80fd5b50638b78c6d819546103fc565b348015610577575f80fd5b506102a460035481565b34801561058c575f80fd5b5060025461059a9060ff1681565b60405161028c91906119de565b3480156105b2575f80fd5b506102806105c13660046119ec565b611097565b3480156105d1575f80fd5b5061036e6105e0366004611a3d565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610618575f80fd5b506102da610627366004611874565b611275565b348015610637575f80fd5b5061028061064636600461179f565b60016020525f908152604090205460ff1681565b348015610665575f80fd5b506102806106743660046119ec565b611313565b348015610684575f80fd5b506102da610693366004611874565b611333565b3480156106a3575f80fd5b506102a460075481565b3480156106b8575f80fd5b506102a4600181565b6102da6106cf366004611811565b6113d1565b3480156106df575f80fd5b5061036e6106ee366004611b00565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102da610727366004611811565b61140b565b348015610737575f80fd5b50610280610746366004611811565b611431565b348015610756575f80fd5b506102a4610765366004611811565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f9e4fa10b00000000000000000000000000000000000000000000000000000000148061080e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061081d575061081d82611490565b92915050565b61082d33826114e5565b50565b6108386114f0565b610842828261150a565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261089e81611516565b8382146108d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985575f8484838181106108f4576108f4611b77565b90506020020160208101906109099190611ba4565b905080151560010361094b5761094687878481811061092a5761092a611b77565b905060200201602081019061093f9190611811565b600161150a565b61097c565b61097c87878481811061096057610960611b77565b90506020020160208101906109759190611811565b60016114e5565b506001016108d9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109de5760018160011c14303b106109d55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6109ec83850185611cc7565b60015f81905590915081602001516001811115610a0b57610a0b61199d565b03610a42576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80606001515f03610a7f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160408083015190517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091525f9173ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa158015610af5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b199190611d81565b90508160600151811015610b8a57815160608301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b8151600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020820151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610c0e57610c0e61199d565b0217905550604082015160045560608201516003556080820151600590610c359082611e34565b50610c3f33611547565b610c4e8260a00151600161158f565b60065460025460045460035460405173ffffffffffffffffffffffffffffffffffffffff909416937fab00ab125656c990b2b193b6b0915d55011716161bbb600d22a37eeaf5c2dd5c93610ca99360ff909116929091611f2d565b60405180910390a250508015610ce8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cfa81611516565b5f610d0785870187611f4c565b90505f8160200151806020019051810190610d229190611d81565b9050600754600354610d349190611ff8565b811115610d8e573382604051602001610d4d919061200b565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610b81929160040161204d565b8060035f828254610d9f9190611ff8565b909155505060065482516004805460208601516040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9095169463f242432a94610e0a943094919391928992910161207b565b5f604051808303815f87803b158015610e21575f80fd5b505af1158015610e33573d5f803e3d5ffd5b5050835160065460045460208088015160405173ffffffffffffffffffffffffffffffffffffffff80871698507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39750610e95969516949392899291016120dc565b60408051601f1981840301815290829052610eaf9161198b565b60405180910390a260065490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610ee66114f0565b61084282826114e5565b60605f610eff83850185611cc7565b60408051608081019091529091508060028152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806060016040528084604001518152602001846060015181526020018460800151815250604051602001610f87919061215b565b60408051601f19818403018152918152915251610fa79190602001612189565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6005805461100590611d98565b80601f016020809104026020016040519081016040528092919081815260200182805461103190611d98565b801561107c5780601f106110535761010080835404028352916020019161107c565b820191905f5260205f20905b81548152906001019060200180831161105f57829003601f168201915b505050505081565b61108c6114f0565b6110955f6115d0565b565b5f6110a06114f0565b5f6110ab848461161a565b90505f60025460ff1660018111156110c5576110c561199d565b03611269576110d38161164d565b611109576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078054905f611118836121ff565b90915550505f8181526001602081905260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821790556006546004805493517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169363f242432a936111b59330938c9392918c918c9101612236565b5f604051808303815f87803b1580156111cc575f80fd5b505af11580156111de573d5f803e3d5ffd5b505060065460045460405173ffffffffffffffffffffffffffffffffffffffff808b1695507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d3945061123d9316918a916001908b908b906020016122ac565b60408051601f19818403018152908290526112579161198b565b60405180910390a2600191505061126e565b5f9150505b9392505050565b600261128081611516565b8382146112b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109855761130b8686838181106112d8576112d8611b77565b90506020020160208101906112ed9190611811565b8585848181106112ff576112ff611b77565b9050602002013561150a565b6001016112bb565b5f8061131f848461161a565b905061132a8161164d565b95945050505050565b600261133e81611516565b838214611377576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985576113c986868381811061139657611396611b77565b90506020020160208101906113ab9190611811565b8585848181106113bd576113bd611b77565b905060200201356114e5565b600101611379565b6113d96114f0565b63389a75e1600c52805f526020600c2080544211156113ff57636f5e88185f526004601cfd5b5f905561082d816115d0565b6114136114f0565b8060601b61142857637448fbae5f526004601cfd5b61082d816115d0565b5f8173ffffffffffffffffffffffffffffffffffffffff16611456638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061081d5750638b78c6d8600c9081525f8390526020902054600316151561081d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061081d575061081d82611673565b61084282825f611709565b638b78c6d819543314611095576382b429005f526004601cfd5b61084282826001611709565b638b78c6d81954331461082d57638b78c6d8600c52335f52806020600c20541661082d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f8061162883850185612324565b90505f816020015180602001905181019061164391906123a1565b5195945050505050565b5f8181526001602052604081205460ff1615801561081d57506003546007541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061081d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461081d565b638b78c6d8600c52825f526020600c2080548381178361172a575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611770575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461126e575f80fd5b5f602082840312156117af575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461082d575f80fd5b80356117e2816117b6565b919050565b5f80604083850312156117f8575f80fd5b8235611803816117b6565b946020939093013593505050565b5f60208284031215611821575f80fd5b813561126e816117b6565b5f8083601f84011261183c575f80fd5b50813567ffffffffffffffff811115611853575f80fd5b6020830191508360208260051b850101111561186d575f80fd5b9250929050565b5f805f8060408587031215611887575f80fd5b843567ffffffffffffffff81111561189d575f80fd5b6118a98782880161182c565b909550935050602085013567ffffffffffffffff8111156118c8575f80fd5b6118d48782880161182c565b95989497509550505050565b5f8083601f8401126118f0575f80fd5b50813567ffffffffffffffff811115611907575f80fd5b60208301915083602082850101111561186d575f80fd5b5f806020838503121561192f575f80fd5b823567ffffffffffffffff811115611945575f80fd5b611951858286016118e0565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61126e602083018461195d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106119da576119da61199d565b9052565b6020810161081d82846119ca565b5f805f604084860312156119fe575f80fd5b8335611a09816117b6565b9250602084013567ffffffffffffffff811115611a24575f80fd5b611a30868287016118e0565b9497909650939450505050565b5f805f805f805f8060a0898b031215611a54575f80fd5b8835611a5f816117b6565b97506020890135611a6f816117b6565b9650604089013567ffffffffffffffff811115611a8a575f80fd5b611a968b828c0161182c565b909750955050606089013567ffffffffffffffff811115611ab5575f80fd5b611ac18b828c0161182c565b909550935050608089013567ffffffffffffffff811115611ae0575f80fd5b611aec8b828c016118e0565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215611b15575f80fd5b8635611b20816117b6565b95506020870135611b30816117b6565b94506040870135935060608701359250608087013567ffffffffffffffff811115611b59575f80fd5b611b6589828a016118e0565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611bb4575f80fd5b8135801515811461126e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff81118282101715611c1357611c13611bc3565b60405290565b6040805190810167ffffffffffffffff81118282101715611c1357611c13611bc3565b5f82601f830112611c4b575f80fd5b813567ffffffffffffffff811115611c6557611c65611bc3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611c9457611c94611bc3565b604052818152838201602001851015611cab575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611cd7575f80fd5b813567ffffffffffffffff811115611ced575f80fd5b820160c08185031215611cfe575f80fd5b611d06611bf0565b8135611d11816117b6565b8152602082013560028110611d24575f80fd5b60208201526040828101359082015260608083013590820152608082013567ffffffffffffffff811115611d56575f80fd5b611d6286828501611c3c565b608083015250611d7460a083016117d7565b60a0820152949350505050565b5f60208284031215611d91575f80fd5b5051919050565b600181811c90821680611dac57607f821691505b602082108103611de3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610ce857805f5260205f20601f840160051c81016020851015611e0e5750805b601f840160051c820191505b81811015611e2d575f8155600101611e1a565b5050505050565b815167ffffffffffffffff811115611e4e57611e4e611bc3565b611e6281611e5c8454611d98565b84611de9565b6020601f821160018114611eb3575f8315611e7d5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611e2d565b5f84815260208120601f198516915b82811015611ee25787850151825560209485019460019092019101611ec2565b5084821015611f1e57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60608101611f3b82866119ca565b602082019390935260400152919050565b5f60208284031215611f5c575f80fd5b813567ffffffffffffffff811115611f72575f80fd5b820160408185031215611f83575f80fd5b611f8b611c19565b8135611f96816117b6565b8152602082013567ffffffffffffffff811115611fb1575f80fd5b611fbd86828501611c3c565b602083015250949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561081d5761081d611fcb565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612045606084018261195d565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f612045604083018461195d565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f6120d160a083018461195d565b979650505050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1660148201528360288201528260488201525f82518060208501606885015e5f92016068019182525095945050505050565b6020815281516020820152602082015160408201525f6040830151606080840152612045608084018261195d565b602081525f8251600381106121a0576121a061199d565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261204560a084018261195d565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222f5761222f611fcb565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015284604082015283606082015260a060808201528160a0820152818360c08301375f81830160c090810191909152601f909201601f1916010195945050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008760601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b166014820152846028820152836048820152818360688301375f910160680190815295945050505050565b5f60208284031215612334575f80fd5b813567ffffffffffffffff81111561234a575f80fd5b82016040818503121561235b575f80fd5b612363611c19565b813567ffffffffffffffff811115612379575f80fd5b61238586828501611c3c565b825250602082013567ffffffffffffffff811115611fb1575f80fd5b5f60208284031280156123b2575f80fd5b506040516020810167ffffffffffffffff811182821017156123d6576123d6611bc3565b604052915182525091905056fea2646970667358221220a5819b6a510aaba57db1c04a7df6afe97273f785191112659f139dcd48d6dbc964736f6c634300081a0033",_5="0x60806040526004361061025d575f3560e01c8063609d33341161014b578063cc3c0f06116100c6578063f04e283e1161007c578063f2fde38b11610062578063f2fde38b14610719578063fe9fbb801461072c578063fee81cf41461074b575f80fd5b8063f04e283e146106c1578063f23a6e61146106d4575f80fd5b8063dcc21361116100ac578063dcc2136114610679578063dcc59b6f14610698578063ec87621c146106ad575f80fd5b8063cc3c0f061461062c578063db09da121461065a575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf146105a7578063bc197c81146105c6578063be4994f81461060d575f80fd5b8063a4d66daf1461056c578063a8c62e7614610581575f80fd5b8063609d333414610524578063715018a61461053857806375b238fc146105405780638da5cb5b14610554575f80fd5b80632de94807116101db578063474f5a44116101ab5780634e7165a2116101915780634e7165a2146104bb578063514e62fc146104e757806354d1f13d1461051c575f80fd5b8063474f5a441461045f5780634a4ee7b1146104a8575f80fd5b80632de948071461039f57806338d52e0f146103d05780634359d28a14610421578063439fab9114610440575f80fd5b80631c10893f11610230578063228cb73311610216578063228cb73314610324578063256929621461033857806328d6183b14610340575f80fd5b80631c10893f146102dc5780631cd64df4146102ef575f80fd5b806301ffc9a71461026157806307621eca1461029557806317d70f7c146102b2578063183a4f6e146102c7575b5f80fd5b34801561026c575f80fd5b5061028061027b366004611760565b61077c565b60405190151581526020015b60405180910390f35b3480156102a0575f80fd5b505f545b60405190815260200161028c565b3480156102bd575f80fd5b506102a460045481565b6102da6102d536600461179f565b610823565b005b6102da6102ea3660046117e7565b610830565b3480156102fa575f80fd5b506102806103093660046117e7565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561032f575f80fd5b506102a45f5481565b6102da610846565b34801561034b575f80fd5b507f9e4fa10b000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161028c565b3480156103aa575f80fd5b506102a46103b9366004611811565b638b78c6d8600c9081525f91909152602090205490565b3480156103db575f80fd5b506006546103fc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028c565b34801561042c575f80fd5b506102da61043b366004611874565b610893565b34801561044b575f80fd5b506102da61045a36600461191e565b61098d565b34801561046a575f80fd5b5061047e61047936600461191e565b610ced565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161028c565b6102da6104b63660046117e7565b610ede565b3480156104c6575f80fd5b506104da6104d536600461191e565b610ef0565b60405161028c919061198b565b3480156104f2575f80fd5b506102806105013660046117e7565b638b78c6d8600c9081525f9290925260209091205416151590565b6102da610fbf565b34801561052f575f80fd5b506104da610ff8565b6102da611084565b34801561054b575f80fd5b506102a4600281565b34801561055f575f80fd5b50638b78c6d819546103fc565b348015610577575f80fd5b506102a460035481565b34801561058c575f80fd5b5060025461059a9060ff1681565b60405161028c91906119de565b3480156105b2575f80fd5b506102806105c13660046119ec565b611097565b3480156105d1575f80fd5b5061036e6105e0366004611a3d565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610618575f80fd5b506102da610627366004611874565b611275565b348015610637575f80fd5b5061028061064636600461179f565b60016020525f908152604090205460ff1681565b348015610665575f80fd5b506102806106743660046119ec565b611313565b348015610684575f80fd5b506102da610693366004611874565b611333565b3480156106a3575f80fd5b506102a460075481565b3480156106b8575f80fd5b506102a4600181565b6102da6106cf366004611811565b6113d1565b3480156106df575f80fd5b5061036e6106ee366004611b00565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102da610727366004611811565b61140b565b348015610737575f80fd5b50610280610746366004611811565b611431565b348015610756575f80fd5b506102a4610765366004611811565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f9e4fa10b00000000000000000000000000000000000000000000000000000000148061080e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061081d575061081d82611490565b92915050565b61082d33826114e5565b50565b6108386114f0565b610842828261150a565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261089e81611516565b8382146108d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985575f8484838181106108f4576108f4611b77565b90506020020160208101906109099190611ba4565b905080151560010361094b5761094687878481811061092a5761092a611b77565b905060200201602081019061093f9190611811565b600161150a565b61097c565b61097c87878481811061096057610960611b77565b90506020020160208101906109759190611811565b60016114e5565b506001016108d9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109de5760018160011c14303b106109d55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6109ec83850185611cc7565b60015f81905590915081602001516001811115610a0b57610a0b61199d565b03610a42576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80606001515f03610a7f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160408083015190517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091525f9173ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa158015610af5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b199190611d81565b90508160600151811015610b8a57815160608301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b8151600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020820151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610c0e57610c0e61199d565b0217905550604082015160045560608201516003556080820151600590610c359082611e34565b50610c3f33611547565b610c4e8260a00151600161158f565b60065460025460045460035460405173ffffffffffffffffffffffffffffffffffffffff909416937fab00ab125656c990b2b193b6b0915d55011716161bbb600d22a37eeaf5c2dd5c93610ca99360ff909116929091611f2d565b60405180910390a250508015610ce8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cfa81611516565b5f610d0785870187611f4c565b90505f8160200151806020019051810190610d229190611d81565b9050600754600354610d349190611ff8565b811115610d8e573382604051602001610d4d919061200b565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610b81929160040161204d565b8060035f828254610d9f9190611ff8565b909155505060065482516004805460208601516040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9095169463f242432a94610e0a943094919391928992910161207b565b5f604051808303815f87803b158015610e21575f80fd5b505af1158015610e33573d5f803e3d5ffd5b5050835160065460045460208088015160405173ffffffffffffffffffffffffffffffffffffffff80871698507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39750610e95969516949392899291016120dc565b60408051601f1981840301815290829052610eaf9161198b565b60405180910390a260065490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610ee66114f0565b61084282826114e5565b60605f610eff83850185611cc7565b60408051608081019091529091508060028152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806060016040528084604001518152602001846060015181526020018460800151815250604051602001610f87919061215b565b60408051601f19818403018152918152915251610fa79190602001612189565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6005805461100590611d98565b80601f016020809104026020016040519081016040528092919081815260200182805461103190611d98565b801561107c5780601f106110535761010080835404028352916020019161107c565b820191905f5260205f20905b81548152906001019060200180831161105f57829003601f168201915b505050505081565b61108c6114f0565b6110955f6115d0565b565b5f6110a06114f0565b5f6110ab848461161a565b90505f60025460ff1660018111156110c5576110c561199d565b03611269576110d38161164d565b611109576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078054905f611118836121ff565b90915550505f8181526001602081905260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821790556006546004805493517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169363f242432a936111b59330938c9392918c918c9101612236565b5f604051808303815f87803b1580156111cc575f80fd5b505af11580156111de573d5f803e3d5ffd5b505060065460045460405173ffffffffffffffffffffffffffffffffffffffff808b1695507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d3945061123d9316918a916001908b908b906020016122ac565b60408051601f19818403018152908290526112579161198b565b60405180910390a2600191505061126e565b5f9150505b9392505050565b600261128081611516565b8382146112b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109855761130b8686838181106112d8576112d8611b77565b90506020020160208101906112ed9190611811565b8585848181106112ff576112ff611b77565b9050602002013561150a565b6001016112bb565b5f8061131f848461161a565b905061132a8161164d565b95945050505050565b600261133e81611516565b838214611377576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985576113c986868381811061139657611396611b77565b90506020020160208101906113ab9190611811565b8585848181106113bd576113bd611b77565b905060200201356114e5565b600101611379565b6113d96114f0565b63389a75e1600c52805f526020600c2080544211156113ff57636f5e88185f526004601cfd5b5f905561082d816115d0565b6114136114f0565b8060601b61142857637448fbae5f526004601cfd5b61082d816115d0565b5f8173ffffffffffffffffffffffffffffffffffffffff16611456638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061081d5750638b78c6d8600c9081525f8390526020902054600316151561081d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061081d575061081d82611673565b61084282825f611709565b638b78c6d819543314611095576382b429005f526004601cfd5b61084282826001611709565b638b78c6d81954331461082d57638b78c6d8600c52335f52806020600c20541661082d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f8061162883850185612324565b90505f816020015180602001905181019061164391906123a1565b5195945050505050565b5f8181526001602052604081205460ff1615801561081d57506003546007541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061081d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461081d565b638b78c6d8600c52825f526020600c2080548381178361172a575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611770575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461126e575f80fd5b5f602082840312156117af575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461082d575f80fd5b80356117e2816117b6565b919050565b5f80604083850312156117f8575f80fd5b8235611803816117b6565b946020939093013593505050565b5f60208284031215611821575f80fd5b813561126e816117b6565b5f8083601f84011261183c575f80fd5b50813567ffffffffffffffff811115611853575f80fd5b6020830191508360208260051b850101111561186d575f80fd5b9250929050565b5f805f8060408587031215611887575f80fd5b843567ffffffffffffffff81111561189d575f80fd5b6118a98782880161182c565b909550935050602085013567ffffffffffffffff8111156118c8575f80fd5b6118d48782880161182c565b95989497509550505050565b5f8083601f8401126118f0575f80fd5b50813567ffffffffffffffff811115611907575f80fd5b60208301915083602082850101111561186d575f80fd5b5f806020838503121561192f575f80fd5b823567ffffffffffffffff811115611945575f80fd5b611951858286016118e0565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61126e602083018461195d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106119da576119da61199d565b9052565b6020810161081d82846119ca565b5f805f604084860312156119fe575f80fd5b8335611a09816117b6565b9250602084013567ffffffffffffffff811115611a24575f80fd5b611a30868287016118e0565b9497909650939450505050565b5f805f805f805f8060a0898b031215611a54575f80fd5b8835611a5f816117b6565b97506020890135611a6f816117b6565b9650604089013567ffffffffffffffff811115611a8a575f80fd5b611a968b828c0161182c565b909750955050606089013567ffffffffffffffff811115611ab5575f80fd5b611ac18b828c0161182c565b909550935050608089013567ffffffffffffffff811115611ae0575f80fd5b611aec8b828c016118e0565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215611b15575f80fd5b8635611b20816117b6565b95506020870135611b30816117b6565b94506040870135935060608701359250608087013567ffffffffffffffff811115611b59575f80fd5b611b6589828a016118e0565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611bb4575f80fd5b8135801515811461126e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff81118282101715611c1357611c13611bc3565b60405290565b6040805190810167ffffffffffffffff81118282101715611c1357611c13611bc3565b5f82601f830112611c4b575f80fd5b813567ffffffffffffffff811115611c6557611c65611bc3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611c9457611c94611bc3565b604052818152838201602001851015611cab575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611cd7575f80fd5b813567ffffffffffffffff811115611ced575f80fd5b820160c08185031215611cfe575f80fd5b611d06611bf0565b8135611d11816117b6565b8152602082013560028110611d24575f80fd5b60208201526040828101359082015260608083013590820152608082013567ffffffffffffffff811115611d56575f80fd5b611d6286828501611c3c565b608083015250611d7460a083016117d7565b60a0820152949350505050565b5f60208284031215611d91575f80fd5b5051919050565b600181811c90821680611dac57607f821691505b602082108103611de3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610ce857805f5260205f20601f840160051c81016020851015611e0e5750805b601f840160051c820191505b81811015611e2d575f8155600101611e1a565b5050505050565b815167ffffffffffffffff811115611e4e57611e4e611bc3565b611e6281611e5c8454611d98565b84611de9565b6020601f821160018114611eb3575f8315611e7d5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611e2d565b5f84815260208120601f198516915b82811015611ee25787850151825560209485019460019092019101611ec2565b5084821015611f1e57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60608101611f3b82866119ca565b602082019390935260400152919050565b5f60208284031215611f5c575f80fd5b813567ffffffffffffffff811115611f72575f80fd5b820160408185031215611f83575f80fd5b611f8b611c19565b8135611f96816117b6565b8152602082013567ffffffffffffffff811115611fb1575f80fd5b611fbd86828501611c3c565b602083015250949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561081d5761081d611fcb565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612045606084018261195d565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f612045604083018461195d565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f6120d160a083018461195d565b979650505050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1660148201528360288201528260488201525f82518060208501606885015e5f92016068019182525095945050505050565b6020815281516020820152602082015160408201525f6040830151606080840152612045608084018261195d565b602081525f8251600381106121a0576121a061199d565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261204560a084018261195d565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222f5761222f611fcb565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015284604082015283606082015260a060808201528160a0820152818360c08301375f81830160c090810191909152601f909201601f1916010195945050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008760601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b166014820152846028820152836048820152818360688301375f910160680190815295945050505050565b5f60208284031215612334575f80fd5b813567ffffffffffffffff81111561234a575f80fd5b82016040818503121561235b575f80fd5b612363611c19565b813567ffffffffffffffff811115612379575f80fd5b61238586828501611c3c565b825250602082013567ffffffffffffffff811115611fb1575f80fd5b5f60208284031280156123b2575f80fd5b506040516020810167ffffffffffffffff811182821017156123d6576123d6611bc3565b604052915182525091905056fea2646970667358221220a5819b6a510aaba57db1c04a7df6afe97273f785191112659f139dcd48d6dbc964736f6c634300081a0033",z5={},B5={},G0={_format:A5,contractName:E5,sourceName:R5,abi:O5,bytecode:C5,deployedBytecode:_5,linkReferences:z5,deployedLinkReferences:B5},N5="hh-sol-artifact-1",P5="PointsIncentive",$5="contracts/incentives/PointsIncentive.sol",L5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"venue",type:"address"},{indexed:!1,internalType:"bytes4",name:"selector",type:"bytes4"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"PointsIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"pure",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],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:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"venue",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}],H5="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6113ca806100895f395ff3fe6080604052600436106101af575f3560e01c8063514e62fc116100e7578063c884ef8311610087578063ea3d508a11610062578063ea3d508a14610543578063f04e283e1461055c578063f2fde38b1461056f578063fee81cf414610582575f80fd5b8063c884ef83146104e1578063db09da121461050f578063dcc59b6f1461052e575f80fd5b80638da5cb5b116100c25780638da5cb5b1461044e578063a270a73714610481578063a4d66daf146104ad578063bb1757cf146104c2575f80fd5b8063514e62fc1461040957806354d1f13d1461043e578063715018a614610446575f80fd5b806328d6183b11610152578063439fab911161012d578063439fab9114610354578063474f5a44146103735780634a4ee7b1146103bc5780634e7165a2146103cf575f80fd5b806328d6183b1461027d5780632de94807146102dc57806338d52e0f1461030d575f80fd5b80631c10893f1161018d5780631c10893f146102195780631cd64df41461022c578063228cb733146102615780632569296214610275575f80fd5b806301ffc9a7146101b357806307621eca146101e7578063183a4f6e14610204575b5f80fd5b3480156101be575f80fd5b506101d26101cd36600461108b565b6105b3565b60405190151581526020015b60405180910390f35b3480156101f2575f80fd5b505f545b6040519081526020016101de565b6102176102123660046110ab565b61060e565b005b6102176102273660046110e3565b61061b565b348015610237575f80fd5b506101d26102463660046110e3565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561026c575f80fd5b506101f65f5481565b610217610631565b348015610288575f80fd5b507f0d36a40d000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101de565b3480156102e7575f80fd5b506101f66102f636600461110d565b638b78c6d8600c9081525f91909152602090205490565b348015610318575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b34801561035f575f80fd5b5061021761036e36600461116d565b61067e565b34801561037e575f80fd5b5061039261038d36600461116d565b610890565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016101de565b6102176103ca3660046110e3565b6108c4565b3480156103da575f80fd5b506103fc6103e936600461116d565b5050604080515f81526020810190915290565b6040516101de91906111ac565b348015610414575f80fd5b506101d26104233660046110e3565b638b78c6d8600c9081525f9290925260209091205416151590565b6102176108d6565b61021761090f565b348015610459575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275461032f565b34801561048c575f80fd5b5060025461032f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104b8575f80fd5b506101f660035481565b3480156104cd575f80fd5b506101d26104dc3660046111ff565b610922565b3480156104ec575f80fd5b506101d26104fb36600461110d565b60016020525f908152604090205460ff1681565b34801561051a575f80fd5b506101d26105293660046111ff565b610d52565b348015610539575f80fd5b506101f660055481565b34801561054e575f80fd5b506004546102ab9060e01b81565b61021761056a36600461110d565b610d64565b61021761057d36600461110d565b610d9e565b34801561058d575f80fd5b506101f661059c36600461110d565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f0d36a40d000000000000000000000000000000000000000000000000000000001480610608575061060882610dc4565b92915050565b6106183382610e19565b50565b610623610e24565b61062d8282610e59565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156106cf5760018160011c14303b106106c65763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6106dd83850185611250565b905080604001515f14806106f357506060810151155b1561072a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020810151600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e09290921c91909117905560408101515f5560608101516003556107bf33610e65565b805f015173ffffffffffffffffffffffffffffffffffffffff167fef49c8fd80435c15980f0f55660ffaac9417e5843768f7f21566cfad2d19bfe782602001518360400151846060015160405161084d939291907fffffffff000000000000000000000000000000000000000000000000000000009390931683526020830191909152604082015260600190565b60405180910390a250801561088b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108cc610e24565b61062d8282610e19565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610917610e24565b6109205f610ec8565b565b5f61092b610e24565b600254604080517f8da5cb5b000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169130918391638da5cb5b916004808201926020929091908290030181865afa15801561099d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c191906112e8565b73ffffffffffffffffffffffffffffffffffffffff1614158015610a7a57506040517f514e62fc0000000000000000000000000000000000000000000000000000000081523060048201526002602482015273ffffffffffffffffffffffffffffffffffffffff82169063514e62fc90604401602060405180830381865afa158015610a4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a739190611303565b1515600114155b15610ab1576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aba85610f2d565b610af0576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058054905f610aff83611322565b909155505073ffffffffffffffffffffffffffffffffffffffff8581165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915560025460045483549251602481019590955260448501929092529193919091169160e09190911b90606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610c0a919061137e565b5f604051808303815f865af19150503d805f8114610c43576040519150601f19603f3d011682016040523d82523d5f602084013e610c48565b606091505b5050905080610c83576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529289901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8716907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610d3e916111ac565b60405180910390a250600195945050505050565b5f610d5c84610f2d565b949350505050565b610d6c610e24565b63389a75e1600c52805f526020600c208054421115610d9257636f5e88185f526004601cfd5b5f905561061881610ec8565b610da6610e24565b8060601b610dbb57637448fbae5f526004601cfd5b61061881610ec8565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa9216705000000000000000000000000000000000000000000000000000000001480610608575061060882610f6a565b61062d82825f611000565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610920576382b429005f526004601cfd5b61062d82826001611000565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561060857506003546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061060857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610608565b638b78c6d8600c52825f526020600c20805483811783611021575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611086575f80fd5b919050565b5f6020828403121561109b575f80fd5b6110a482611057565b9392505050565b5f602082840312156110bb575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610618575f80fd5b5f80604083850312156110f4575f80fd5b82356110ff816110c2565b946020939093013593505050565b5f6020828403121561111d575f80fd5b81356110a4816110c2565b5f8083601f840112611138575f80fd5b50813567ffffffffffffffff81111561114f575f80fd5b602083019150836020828501011115611166575f80fd5b9250929050565b5f806020838503121561117e575f80fd5b823567ffffffffffffffff811115611194575f80fd5b6111a085828601611128565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f805f60408486031215611211575f80fd5b833561121c816110c2565b9250602084013567ffffffffffffffff811115611237575f80fd5b61124386828701611128565b9497909650939450505050565b5f6080828403128015611261575f80fd5b506040516080810167ffffffffffffffff811182821017156112aa577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282356112b8816110c2565b81526112c660208401611057565b6020820152604083810135908201526060928301359281019290925250919050565b5f602082840312156112f8575f80fd5b81516110a4816110c2565b5f60208284031215611313575f80fd5b815180151581146110a4575f80fd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611377577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b5f82518060208501845e5f92019182525091905056fea2646970667358221220ffbdb425e855f60328c6ebf81b28965fc1d20a52c81e723566d80b77f491fc3964736f6c634300081a0033",F5="0x6080604052600436106101af575f3560e01c8063514e62fc116100e7578063c884ef8311610087578063ea3d508a11610062578063ea3d508a14610543578063f04e283e1461055c578063f2fde38b1461056f578063fee81cf414610582575f80fd5b8063c884ef83146104e1578063db09da121461050f578063dcc59b6f1461052e575f80fd5b80638da5cb5b116100c25780638da5cb5b1461044e578063a270a73714610481578063a4d66daf146104ad578063bb1757cf146104c2575f80fd5b8063514e62fc1461040957806354d1f13d1461043e578063715018a614610446575f80fd5b806328d6183b11610152578063439fab911161012d578063439fab9114610354578063474f5a44146103735780634a4ee7b1146103bc5780634e7165a2146103cf575f80fd5b806328d6183b1461027d5780632de94807146102dc57806338d52e0f1461030d575f80fd5b80631c10893f1161018d5780631c10893f146102195780631cd64df41461022c578063228cb733146102615780632569296214610275575f80fd5b806301ffc9a7146101b357806307621eca146101e7578063183a4f6e14610204575b5f80fd5b3480156101be575f80fd5b506101d26101cd36600461108b565b6105b3565b60405190151581526020015b60405180910390f35b3480156101f2575f80fd5b505f545b6040519081526020016101de565b6102176102123660046110ab565b61060e565b005b6102176102273660046110e3565b61061b565b348015610237575f80fd5b506101d26102463660046110e3565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561026c575f80fd5b506101f65f5481565b610217610631565b348015610288575f80fd5b507f0d36a40d000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101de565b3480156102e7575f80fd5b506101f66102f636600461110d565b638b78c6d8600c9081525f91909152602090205490565b348015610318575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b34801561035f575f80fd5b5061021761036e36600461116d565b61067e565b34801561037e575f80fd5b5061039261038d36600461116d565b610890565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016101de565b6102176103ca3660046110e3565b6108c4565b3480156103da575f80fd5b506103fc6103e936600461116d565b5050604080515f81526020810190915290565b6040516101de91906111ac565b348015610414575f80fd5b506101d26104233660046110e3565b638b78c6d8600c9081525f9290925260209091205416151590565b6102176108d6565b61021761090f565b348015610459575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275461032f565b34801561048c575f80fd5b5060025461032f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104b8575f80fd5b506101f660035481565b3480156104cd575f80fd5b506101d26104dc3660046111ff565b610922565b3480156104ec575f80fd5b506101d26104fb36600461110d565b60016020525f908152604090205460ff1681565b34801561051a575f80fd5b506101d26105293660046111ff565b610d52565b348015610539575f80fd5b506101f660055481565b34801561054e575f80fd5b506004546102ab9060e01b81565b61021761056a36600461110d565b610d64565b61021761057d36600461110d565b610d9e565b34801561058d575f80fd5b506101f661059c36600461110d565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f0d36a40d000000000000000000000000000000000000000000000000000000001480610608575061060882610dc4565b92915050565b6106183382610e19565b50565b610623610e24565b61062d8282610e59565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156106cf5760018160011c14303b106106c65763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6106dd83850185611250565b905080604001515f14806106f357506060810151155b1561072a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020810151600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e09290921c91909117905560408101515f5560608101516003556107bf33610e65565b805f015173ffffffffffffffffffffffffffffffffffffffff167fef49c8fd80435c15980f0f55660ffaac9417e5843768f7f21566cfad2d19bfe782602001518360400151846060015160405161084d939291907fffffffff000000000000000000000000000000000000000000000000000000009390931683526020830191909152604082015260600190565b60405180910390a250801561088b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108cc610e24565b61062d8282610e19565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610917610e24565b6109205f610ec8565b565b5f61092b610e24565b600254604080517f8da5cb5b000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169130918391638da5cb5b916004808201926020929091908290030181865afa15801561099d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c191906112e8565b73ffffffffffffffffffffffffffffffffffffffff1614158015610a7a57506040517f514e62fc0000000000000000000000000000000000000000000000000000000081523060048201526002602482015273ffffffffffffffffffffffffffffffffffffffff82169063514e62fc90604401602060405180830381865afa158015610a4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a739190611303565b1515600114155b15610ab1576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aba85610f2d565b610af0576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058054905f610aff83611322565b909155505073ffffffffffffffffffffffffffffffffffffffff8581165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915560025460045483549251602481019590955260448501929092529193919091169160e09190911b90606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610c0a919061137e565b5f604051808303815f865af19150503d805f8114610c43576040519150601f19603f3d011682016040523d82523d5f602084013e610c48565b606091505b5050905080610c83576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529289901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8716907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610d3e916111ac565b60405180910390a250600195945050505050565b5f610d5c84610f2d565b949350505050565b610d6c610e24565b63389a75e1600c52805f526020600c208054421115610d9257636f5e88185f526004601cfd5b5f905561061881610ec8565b610da6610e24565b8060601b610dbb57637448fbae5f526004601cfd5b61061881610ec8565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa9216705000000000000000000000000000000000000000000000000000000001480610608575061060882610f6a565b61062d82825f611000565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610920576382b429005f526004601cfd5b61062d82826001611000565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561060857506003546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061060857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610608565b638b78c6d8600c52825f526020600c20805483811783611021575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611086575f80fd5b919050565b5f6020828403121561109b575f80fd5b6110a482611057565b9392505050565b5f602082840312156110bb575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610618575f80fd5b5f80604083850312156110f4575f80fd5b82356110ff816110c2565b946020939093013593505050565b5f6020828403121561111d575f80fd5b81356110a4816110c2565b5f8083601f840112611138575f80fd5b50813567ffffffffffffffff81111561114f575f80fd5b602083019150836020828501011115611166575f80fd5b9250929050565b5f806020838503121561117e575f80fd5b823567ffffffffffffffff811115611194575f80fd5b6111a085828601611128565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f805f60408486031215611211575f80fd5b833561121c816110c2565b9250602084013567ffffffffffffffff811115611237575f80fd5b61124386828701611128565b9497909650939450505050565b5f6080828403128015611261575f80fd5b506040516080810167ffffffffffffffff811182821017156112aa577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282356112b8816110c2565b81526112c660208401611057565b6020820152604083810135908201526060928301359281019290925250919050565b5f602082840312156112f8575f80fd5b81516110a4816110c2565b5f60208284031215611313575f80fd5b815180151581146110a4575f80fd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611377577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b5f82518060208501845e5f92019182525091905056fea2646970667358221220ffbdb425e855f60328c6ebf81b28965fc1d20a52c81e723566d80b77f491fc3964736f6c634300081a0033",k5={},S5={},V0={_format:N5,contractName:P5,sourceName:$5,abi:L5,bytecode:H5,deployedBytecode:F5,linkReferences:k5,deployedLinkReferences:S5},D5="hh-sol-artifact-1",G5="LimitedSignerValidator",V5="contracts/validators/LimitedSignerValidator.sol",U5=[{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"uint8",name:"available",type:"uint8"},{internalType:"uint256",name:"id",type:"uint256"}],name:"InvalidIncentive",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[{internalType:"address",name:"claimant",type:"address"}],name:"MaximumClaimed",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"validatorCaller",type:"address"}],name:"SignerValidatorInitialized",type:"event"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"}],name:"hashClaimantData",outputs:[{internalType:"bytes32",name:"hash",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint8",name:"incentiveQuantity",type:"uint8"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"incentiveData",type:"bytes"}],name:"hashSignerData",outputs:[{internalType:"bytes32",name:"hashedSignerData",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"maxClaimCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"quantityClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"signers_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newCaller",type:"address"}],name:"setValidatorCaller",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"signers",outputs:[{internalType:"bool",name:"",type:"bool"}],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:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"claimData",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"}],q5="0x610120604052348015610010575f80fd5b50306080524660a0525f60c081905260e081905261010052610030610035565b61009a565b63409feecd19805460018116156100535763f92ee8a95f526004601cfd5b6001600160401b03808260011c14610095578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60805160a05160c05160e051610100516119466100c85f395f50505f50505f50505f50505f50506119465ff3fe60806040526004361061013d575f3560e01c8063715018a6116100bb578063ce5c134f11610071578063f04e283e11610057578063f04e283e1461036d578063f2fde38b14610380578063fee81cf414610393575f80fd5b8063ce5c134f14610339578063d3de6e751461034e575f80fd5b806384b0196e116100a157806384b0196e146102a05780638da5cb5b146102c7578063a1d2756f1461031a575f80fd5b8063715018a61461026a578063736c0d5b14610272575f80fd5b80632f9e058b11610110578063439fab91116100f6578063439fab911461023057806354d1f13d1461024f578063703b690014610257575f80fd5b80632f9e058b146101e65780634359d28a14610211575f80fd5b806301ffc9a7146101415780630668e9d41461017557806325692962146101a257806328d6183b146101ac575b5f80fd5b34801561014c575f80fd5b5061016061015b366004611106565b6103c4565b60405190151581526020015b60405180910390f35b348015610180575f80fd5b5061019461018f366004611166565b61041f565b60405190815260200161016c565b6101aa610480565b005b3480156101b7575f80fd5b506040517fc8ebc75800000000000000000000000000000000000000000000000000000000815260200161016c565b3480156101f1575f80fd5b5061019461020036600461119c565b60016020525f908152604090205481565b34801561021c575f80fd5b506101aa61022b3660046111fb565b6104cd565b34801561023b575f80fd5b506101aa61024a3660046112a5565b6105c9565b6101aa61075e565b6101606102653660046112e4565b610797565b6101aa61080d565b34801561027d575f80fd5b5061016061028c366004611349565b5f6020819052908152604090205460ff1681565b3480156102ab575f80fd5b506102b4610820565b60405161016c97969594939291906113b0565b3480156102d2575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610325575f80fd5b506101aa610334366004611349565b6108c8565b348015610344575f80fd5b5061019460025481565b348015610359575f80fd5b506101946103683660046115b9565b610917565b6101aa61037b366004611349565b6109aa565b6101aa61038e366004611349565b6109e7565b34801561039e575f80fd5b506101946103ad366004611349565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610a0d565b92915050565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016908201525f906074016040516020818303038152906040528051906020012090505b9392505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6104d5610a62565b82811461050e576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156105c25782828281811061052a5761052a611621565b905060200201602081019061053f919061164e565b5f8087878581811061055357610553611621565b90506020020160208101906105689190611349565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610510565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561061a5760018160011c14303b106106115763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f808061062a8587018761167d565b925092509250610652835f8151811061064557610645611621565b6020026020010151610a97565b60028190555f5b83518110156106dc5760015f8086848151811061067857610678611621565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610659565b5050600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055508015610759576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f6107a3868686610afa565b6107f6576040517f059b704500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b6108038686868686610b54565b9695505050505050565b610815610a62565b61081e5f610cdc565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108b6604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b6108d0610a62565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109a19060c00160405160208183030381529060405280519060200120610d41565b95945050505050565b6109b2610a62565b63389a75e1600c52805f526020600c2080544211156109d857636f5e88185f526004601cfd5b5f90556109e481610cdc565b50565b6109ef610a62565b8060601b610a0457637448fbae5f526004601cfd5b6109e481610cdc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610d6d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461081e576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b5f80610b0785858561041f565b5f8181526001602081905260408220549293509091610b259161174d565b9050600254811115610b3b575f92505050610479565b5f91825260016020819052604090922055949350505050565b6004545f9073ffffffffffffffffffffffffffffffffffffffff163314610ba7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610bb483850185611785565b90505f815f0151806020019051810190610bce9190611845565b90505f610be5898360400151898660200151610917565b905087826040015160ff1611610c395760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff9091166004820152602481018990526044016107ed565b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff16610c98576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ca46003828a610dc2565b60208201518251610ccf9173ffffffffffffffffffffffffffffffffffffffff909116908390610e50565b9998505050505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d4a610f53565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b22000000000000000000000000000000000000000000000000000000001480610419575061041982611020565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610e1957815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610e4657835f528560045260245ffd5b5090555050505050565b5f73ffffffffffffffffffffffffffffffffffffffff84161561047957604051843b610f0b57825160408114610e8e5760418114610ec85750610f4b565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610edb565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5180861860601b3d119250505f60605280604052610f4b565b631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa905060208260443d01868b5afa9151911691141691505b509392505050565b5f805f80610fc5604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c0000000000000000000000000000000000000000000000000000000014806104195750610419825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061041957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610419565b5f60208284031215611116575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610479575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146109e4575f80fd5b5f805f60608486031215611178575f80fd5b8335925060208401359150604084013561119181611145565b809150509250925092565b5f602082840312156111ac575f80fd5b5035919050565b5f8083601f8401126111c3575f80fd5b50813567ffffffffffffffff8111156111da575f80fd5b6020830191508360208260051b85010111156111f4575f80fd5b9250929050565b5f805f806040858703121561120e575f80fd5b843567ffffffffffffffff811115611224575f80fd5b611230878288016111b3565b909550935050602085013567ffffffffffffffff81111561124f575f80fd5b61125b878288016111b3565b95989497509550505050565b5f8083601f840112611277575f80fd5b50813567ffffffffffffffff81111561128e575f80fd5b6020830191508360208285010111156111f4575f80fd5b5f80602083850312156112b6575f80fd5b823567ffffffffffffffff8111156112cc575f80fd5b6112d885828601611267565b90969095509350505050565b5f805f805f608086880312156112f8575f80fd5b8535945060208601359350604086013561131181611145565b9250606086013567ffffffffffffffff81111561132c575f80fd5b61133888828901611267565b969995985093965092949392505050565b5f60208284031215611359575f80fd5b813561047981611145565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f6113ea60e0830189611364565b82810360408401526113fc8189611364565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561145e578351835260209384019390920191600101611440565b50909b9a5050505050505050505050565b60ff811681146109e4575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156114cd576114cd61147d565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561151a5761151a61147d565b604052919050565b5f67ffffffffffffffff82111561153b5761153b61147d565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112611576575f80fd5b813561158961158482611522565b6114d3565b81815284602083860101111561159d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80608085870312156115cc575f80fd5b8435935060208501356115de8161146f565b925060408501356115ee81611145565b9150606085013567ffffffffffffffff811115611609575f80fd5b61161587828801611567565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561165e575f80fd5b81358015158114610479575f80fd5b803561167881611145565b919050565b5f805f6060848603121561168f575f80fd5b833567ffffffffffffffff8111156116a5575f80fd5b8401601f810186136116b5575f80fd5b803567ffffffffffffffff8111156116cf576116cf61147d565b8060051b6116df602082016114d3565b918252602081840181019290810190898411156116fa575f80fd5b6020850194505b83851015611728578435925061171683611145565b82825260209485019490910190611701565b809750505050505061173c6020850161166d565b929592945050506040919091013590565b80820180821115610419577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60208284031215611795575f80fd5b813567ffffffffffffffff8111156117ab575f80fd5b8201604081850312156117bc575f80fd5b6040805190810167ffffffffffffffff811182821017156117df576117df61147d565b604052813567ffffffffffffffff8111156117f8575f80fd5b61180486828501611567565b825250602082013567ffffffffffffffff811115611820575f80fd5b61182c86828501611567565b602083015250949350505050565b80516116788161146f565b5f60208284031215611855575f80fd5b815167ffffffffffffffff81111561186b575f80fd5b82016060818503121561187c575f80fd5b6118846114aa565b815161188f81611145565b8152602082015167ffffffffffffffff8111156118aa575f80fd5b8201601f810186136118ba575f80fd5b80516118c861158482611522565b8181528760208385010111156118dc575f80fd5b8160208401602083015e5f602083830101528060208501525050506119036040830161183a565b604082015294935050505056fea2646970667358221220cb8a768db10697f28172aef7c1271d6225550fbcc5de6155ba2362b1b3c1189a64736f6c634300081a0033",j5="0x60806040526004361061013d575f3560e01c8063715018a6116100bb578063ce5c134f11610071578063f04e283e11610057578063f04e283e1461036d578063f2fde38b14610380578063fee81cf414610393575f80fd5b8063ce5c134f14610339578063d3de6e751461034e575f80fd5b806384b0196e116100a157806384b0196e146102a05780638da5cb5b146102c7578063a1d2756f1461031a575f80fd5b8063715018a61461026a578063736c0d5b14610272575f80fd5b80632f9e058b11610110578063439fab91116100f6578063439fab911461023057806354d1f13d1461024f578063703b690014610257575f80fd5b80632f9e058b146101e65780634359d28a14610211575f80fd5b806301ffc9a7146101415780630668e9d41461017557806325692962146101a257806328d6183b146101ac575b5f80fd5b34801561014c575f80fd5b5061016061015b366004611106565b6103c4565b60405190151581526020015b60405180910390f35b348015610180575f80fd5b5061019461018f366004611166565b61041f565b60405190815260200161016c565b6101aa610480565b005b3480156101b7575f80fd5b506040517fc8ebc75800000000000000000000000000000000000000000000000000000000815260200161016c565b3480156101f1575f80fd5b5061019461020036600461119c565b60016020525f908152604090205481565b34801561021c575f80fd5b506101aa61022b3660046111fb565b6104cd565b34801561023b575f80fd5b506101aa61024a3660046112a5565b6105c9565b6101aa61075e565b6101606102653660046112e4565b610797565b6101aa61080d565b34801561027d575f80fd5b5061016061028c366004611349565b5f6020819052908152604090205460ff1681565b3480156102ab575f80fd5b506102b4610820565b60405161016c97969594939291906113b0565b3480156102d2575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610325575f80fd5b506101aa610334366004611349565b6108c8565b348015610344575f80fd5b5061019460025481565b348015610359575f80fd5b506101946103683660046115b9565b610917565b6101aa61037b366004611349565b6109aa565b6101aa61038e366004611349565b6109e7565b34801561039e575f80fd5b506101946103ad366004611349565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610a0d565b92915050565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016908201525f906074016040516020818303038152906040528051906020012090505b9392505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6104d5610a62565b82811461050e576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156105c25782828281811061052a5761052a611621565b905060200201602081019061053f919061164e565b5f8087878581811061055357610553611621565b90506020020160208101906105689190611349565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610510565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561061a5760018160011c14303b106106115763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f808061062a8587018761167d565b925092509250610652835f8151811061064557610645611621565b6020026020010151610a97565b60028190555f5b83518110156106dc5760015f8086848151811061067857610678611621565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610659565b5050600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055508015610759576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f6107a3868686610afa565b6107f6576040517f059b704500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b6108038686868686610b54565b9695505050505050565b610815610a62565b61081e5f610cdc565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108b6604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b6108d0610a62565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109a19060c00160405160208183030381529060405280519060200120610d41565b95945050505050565b6109b2610a62565b63389a75e1600c52805f526020600c2080544211156109d857636f5e88185f526004601cfd5b5f90556109e481610cdc565b50565b6109ef610a62565b8060601b610a0457637448fbae5f526004601cfd5b6109e481610cdc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610d6d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461081e576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b5f80610b0785858561041f565b5f8181526001602081905260408220549293509091610b259161174d565b9050600254811115610b3b575f92505050610479565b5f91825260016020819052604090922055949350505050565b6004545f9073ffffffffffffffffffffffffffffffffffffffff163314610ba7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610bb483850185611785565b90505f815f0151806020019051810190610bce9190611845565b90505f610be5898360400151898660200151610917565b905087826040015160ff1611610c395760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff9091166004820152602481018990526044016107ed565b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff16610c98576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ca46003828a610dc2565b60208201518251610ccf9173ffffffffffffffffffffffffffffffffffffffff909116908390610e50565b9998505050505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d4a610f53565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b22000000000000000000000000000000000000000000000000000000001480610419575061041982611020565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610e1957815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610e4657835f528560045260245ffd5b5090555050505050565b5f73ffffffffffffffffffffffffffffffffffffffff84161561047957604051843b610f0b57825160408114610e8e5760418114610ec85750610f4b565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610edb565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5180861860601b3d119250505f60605280604052610f4b565b631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa905060208260443d01868b5afa9151911691141691505b509392505050565b5f805f80610fc5604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c0000000000000000000000000000000000000000000000000000000014806104195750610419825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061041957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610419565b5f60208284031215611116575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610479575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146109e4575f80fd5b5f805f60608486031215611178575f80fd5b8335925060208401359150604084013561119181611145565b809150509250925092565b5f602082840312156111ac575f80fd5b5035919050565b5f8083601f8401126111c3575f80fd5b50813567ffffffffffffffff8111156111da575f80fd5b6020830191508360208260051b85010111156111f4575f80fd5b9250929050565b5f805f806040858703121561120e575f80fd5b843567ffffffffffffffff811115611224575f80fd5b611230878288016111b3565b909550935050602085013567ffffffffffffffff81111561124f575f80fd5b61125b878288016111b3565b95989497509550505050565b5f8083601f840112611277575f80fd5b50813567ffffffffffffffff81111561128e575f80fd5b6020830191508360208285010111156111f4575f80fd5b5f80602083850312156112b6575f80fd5b823567ffffffffffffffff8111156112cc575f80fd5b6112d885828601611267565b90969095509350505050565b5f805f805f608086880312156112f8575f80fd5b8535945060208601359350604086013561131181611145565b9250606086013567ffffffffffffffff81111561132c575f80fd5b61133888828901611267565b969995985093965092949392505050565b5f60208284031215611359575f80fd5b813561047981611145565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f6113ea60e0830189611364565b82810360408401526113fc8189611364565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561145e578351835260209384019390920191600101611440565b50909b9a5050505050505050505050565b60ff811681146109e4575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156114cd576114cd61147d565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561151a5761151a61147d565b604052919050565b5f67ffffffffffffffff82111561153b5761153b61147d565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112611576575f80fd5b813561158961158482611522565b6114d3565b81815284602083860101111561159d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80608085870312156115cc575f80fd5b8435935060208501356115de8161146f565b925060408501356115ee81611145565b9150606085013567ffffffffffffffff811115611609575f80fd5b61161587828801611567565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561165e575f80fd5b81358015158114610479575f80fd5b803561167881611145565b919050565b5f805f6060848603121561168f575f80fd5b833567ffffffffffffffff8111156116a5575f80fd5b8401601f810186136116b5575f80fd5b803567ffffffffffffffff8111156116cf576116cf61147d565b8060051b6116df602082016114d3565b918252602081840181019290810190898411156116fa575f80fd5b6020850194505b83851015611728578435925061171683611145565b82825260209485019490910190611701565b809750505050505061173c6020850161166d565b929592945050506040919091013590565b80820180821115610419577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60208284031215611795575f80fd5b813567ffffffffffffffff8111156117ab575f80fd5b8201604081850312156117bc575f80fd5b6040805190810167ffffffffffffffff811182821017156117df576117df61147d565b604052813567ffffffffffffffff8111156117f8575f80fd5b61180486828501611567565b825250602082013567ffffffffffffffff811115611820575f80fd5b61182c86828501611567565b602083015250949350505050565b80516116788161146f565b5f60208284031215611855575f80fd5b815167ffffffffffffffff81111561186b575f80fd5b82016060818503121561187c575f80fd5b6118846114aa565b815161188f81611145565b8152602082015167ffffffffffffffff8111156118aa575f80fd5b8201601f810186136118ba575f80fd5b80516118c861158482611522565b8181528760208385010111156118dc575f80fd5b8160208401602083015e5f602083830101528060208501525050506119036040830161183a565b604082015294935050505056fea2646970667358221220cb8a768db10697f28172aef7c1271d6225550fbcc5de6155ba2362b1b3c1189a64736f6c634300081a0033",Z5={},W5={},U0={_format:D5,contractName:G5,sourceName:V5,abi:U5,bytecode:q5,deployedBytecode:j5,linkReferences:Z5,deployedLinkReferences:W5},K5="hh-sol-artifact-1",Y5="PayableLimitedSignerValidator",Q5="contracts/validators/PayableLimitedSignerValidator.sol",J5=[{inputs:[{internalType:"address",name:"owner_",type:"address"},{internalType:"uint256",name:"initialClaimFee_",type:"uint256"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"FeeTransferFailed",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidClaimFee",type:"error"},{inputs:[{internalType:"uint8",name:"available",type:"uint8"},{internalType:"uint256",name:"id",type:"uint256"}],name:"InvalidIncentive",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[{internalType:"address",name:"claimant",type:"address"}],name:"MaximumClaimed",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"claimant",type:"address"},{indexed:!0,internalType:"uint256",name:"boostId",type:"uint256"},{indexed:!0,internalType:"uint256",name:"incentiveId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"},{indexed:!1,internalType:"address",name:"feeReceiver",type:"address"}],name:"ClaimFeePaid",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newFee",type:"uint256"}],name:"ClaimFeeUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"validatorCaller",type:"address"}],name:"SignerValidatorInitialized",type:"event"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"claimFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getClaimFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"}],name:"hashClaimantData",outputs:[{internalType:"bytes32",name:"hash",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint8",name:"incentiveQuantity",type:"uint8"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"incentiveData",type:"bytes"}],name:"hashSignerData",outputs:[{internalType:"bytes32",name:"hashedSignerData",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"maxClaimCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"quantityClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"signers_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"newFee",type:"uint256"}],name:"setClaimFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newCaller",type:"address"}],name:"setValidatorCaller",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"signers",outputs:[{internalType:"bool",name:"",type:"bool"}],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:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"claimData",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"}],X5="0x610120604052348015610010575f80fd5b50604051611fe4380380611fe483398101604081905261002f91610131565b306080524660a0525f60c081905260e08190526101005261004e610091565b6001600160a01b038216610074576040516282b42960e81b815260040160405180910390fd5b61007d826100f6565b600381905561008a610091565b5050610168565b63409feecd19805460018116156100af5763f92ee8a95f526004601cfd5b6001600160401b03808260011c146100f1578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0316638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b5f8060408385031215610142575f80fd5b82516001600160a01b0381168114610158575f80fd5b6020939093015192949293505050565b60805160a05160c05160e05161010051611e4e6101965f395f50505f50505f50505f50505f5050611e4e5ff3fe60806040526004361061016d575f3560e01c8063715018a6116100c6578063a1d2756f1161007c578063f04e283e11610057578063f04e283e146103e5578063f2fde38b146103f8578063fee81cf41461040b575f80fd5b8063a1d2756f14610392578063ce5c134f146103b1578063d3de6e75146103c6575f80fd5b806384b0196e116100ac57806384b0196e146103035780638da5cb5b1461032a57806399d32fc41461037d575f80fd5b8063715018a6146102cd578063736c0d5b146102d5575f80fd5b80632f9e058b116101265780634f361c9a116101015780634f361c9a1461029e57806354d1f13d146102b2578063703b6900146102ba575f80fd5b80632f9e058b146102355780634359d28a14610260578063439fab911461027f575f80fd5b8063256929621161015657806325692962146101d257806328d6183b146101dc5780632e75ab5014610216575f80fd5b806301ffc9a7146101715780630668e9d4146101a5575b5f80fd5b34801561017c575f80fd5b5061019061018b3660046115cc565b61043c565b60405190151581526020015b60405180910390f35b3480156101b0575f80fd5b506101c46101bf36600461162c565b610497565b60405190815260200161019c565b6101da6104f8565b005b3480156101e7575f80fd5b506040517fb0fafe5800000000000000000000000000000000000000000000000000000000815260200161019c565b348015610221575f80fd5b506101da610230366004611662565b610545565b348015610240575f80fd5b506101c461024f366004611662565b60016020525f908152604090205481565b34801561026b575f80fd5b506101da61027a3660046116c1565b6105d8565b34801561028a575f80fd5b506101da61029936600461176b565b6106d4565b3480156102a9575f80fd5b506101c46108ae565b6101da6108bc565b6101906102c83660046117aa565b6108f5565b6101da610b03565b3480156102e0575f80fd5b506101906102ef36600461180f565b5f6020819052908152604090205460ff1681565b34801561030e575f80fd5b50610317610b16565b60405161019c9796959493929190611876565b348015610335575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019c565b348015610388575f80fd5b506101c460035481565b34801561039d575f80fd5b506101da6103ac36600461180f565b610bbe565b3480156103bc575f80fd5b506101c460025481565b3480156103d1575f80fd5b506101c46103e0366004611a7f565b610c0d565b6101da6103f336600461180f565b610ca0565b6101da61040636600461180f565b610cdd565b348015610416575f80fd5b506101c461042536600461180f565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb0fafe58000000000000000000000000000000000000000000000000000000001480610491575061049182610d03565b92915050565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016908201525f906074016040516020818303038152906040528051906020012090505b9392505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b61054d610d58565b60065473ffffffffffffffffffffffffffffffffffffffff161561059d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527f64374f1a975abb9bc8e8857d704b9ead41989ff599d90c1e8f7d34bc2ebea92a9060200160405180910390a150565b6105e0610d58565b828114610619576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156106cd5782828281811061063557610635611ae7565b905060200201602081019061064a9190611b14565b5f8087878581811061065e5761065e611ae7565b9050602002016020810190610673919061180f565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161061b565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107255760018160011c14303b1061071c5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f80808061073686880188611b43565b9350935093509350610760845f8151811061075357610753611ae7565b6020026020010151610d8d565b6002829055600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555f5b845181101561082a5760015f808784815181106107c6576107c6611ae7565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016107a7565b5050600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9390931692909217909155505080156108a9576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f6108b7610df0565b905090565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f806108ff610df0565b905080341461093a576040517faf2eb37300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109488888888888610ea5565b90505f821180156109565750805b15610af857600554604080517f39a51be500000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916339a51be59160048083019260209291908290030181865afa1580156109c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ec9190611c23565b90505f8173ffffffffffffffffffffffffffffffffffffffff16846040515f6040518083038185875af1925050503d805f8114610a44576040519150601f19603f3d011682016040523d82523d5f602084013e610a49565b606091505b5050905080610a84576040517f4033e4e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b888a8973ffffffffffffffffffffffffffffffffffffffff167fb671e5a07ab020a275a7ca33dc2074f9761157b5f6e779751e8fd89909dafc6e8786604051610aed92919091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b60405180910390a450505b979650505050505050565b610b0b610d58565b610b145f610f1b565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610bac604080518082018252601d81527f50617961626c654c696d697465645369676e657256616c696461746f720000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b610bc6610d58565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f90610c979060c00160405160208183030381529060405280519060200120610f80565b95945050505050565b610ca8610d58565b63389a75e1600c52805f526020600c208054421115610cce57636f5e88185f526004601cfd5b5f9055610cda81610f1b565b50565b610ce5610d58565b8060601b610cfa57637448fbae5f526004601cfd5b610cda81610f1b565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610491575061049182610fac565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b14576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b6006545f9073ffffffffffffffffffffffffffffffffffffffff1615610e9e5760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166399d32fc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e7a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b79190611c3e565b5060035490565b5f610eb1868686611001565b610f04576040517f059b704500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b610f11868686868661105b565b9695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610f896111e3565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb0fafe580000000000000000000000000000000000000000000000000000000014806104915750610491826112b0565b5f8061100e858585610497565b5f818152600160208190526040822054929350909161102c91611c55565b9050600254811115611042575f925050506104f1565b5f91825260016020819052604090922055949350505050565b6005545f9073ffffffffffffffffffffffffffffffffffffffff1633146110ae576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110bb83850185611c8d565b90505f815f01518060200190518101906110d59190611d4d565b90505f6110ec898360400151898660200151610c0d565b905087826040015160ff16116111405760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff909116600482015260248101899052604401610efb565b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1661119f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111ab6004828a611305565b602082015182516111d69173ffffffffffffffffffffffffffffffffffffffff909116908390611393565b9998505050505050505050565b5f805f80611255604080518082018252601d81527f50617961626c654c696d697465645369676e657256616c696461746f720000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610491575061049182611496565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a00000000000000000000000000000000000000000000000000000000600783111561135c57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c600116600118801561138957835f528560045260245ffd5b5090555050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416156104f157604051843b61144e578251604081146113d1576041811461140b575061148e565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261141e565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5180861860601b3d119250505f6060528060405261148e565b631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa905060208260443d01868b5afa9151911691141691505b509392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b220000000000000000000000000000000000000000000000000000000014806104915750610491825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c0000000000000000000000000000000000000000000000000000000014806104915750610491825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061049157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610491565b5f602082840312156115dc575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146104f1575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610cda575f80fd5b5f805f6060848603121561163e575f80fd5b833592506020840135915060408401356116578161160b565b809150509250925092565b5f60208284031215611672575f80fd5b5035919050565b5f8083601f840112611689575f80fd5b50813567ffffffffffffffff8111156116a0575f80fd5b6020830191508360208260051b85010111156116ba575f80fd5b9250929050565b5f805f80604085870312156116d4575f80fd5b843567ffffffffffffffff8111156116ea575f80fd5b6116f687828801611679565b909550935050602085013567ffffffffffffffff811115611715575f80fd5b61172187828801611679565b95989497509550505050565b5f8083601f84011261173d575f80fd5b50813567ffffffffffffffff811115611754575f80fd5b6020830191508360208285010111156116ba575f80fd5b5f806020838503121561177c575f80fd5b823567ffffffffffffffff811115611792575f80fd5b61179e8582860161172d565b90969095509350505050565b5f805f805f608086880312156117be575f80fd5b853594506020860135935060408601356117d78161160b565b9250606086013567ffffffffffffffff8111156117f2575f80fd5b6117fe8882890161172d565b969995985093965092949392505050565b5f6020828403121561181f575f80fd5b81356104f18161160b565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f6118b060e083018961182a565b82810360408401526118c2818961182a565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611924578351835260209384019390920191600101611906565b50909b9a5050505050505050505050565b60ff81168114610cda575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561199357611993611943565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156119e0576119e0611943565b604052919050565b5f67ffffffffffffffff821115611a0157611a01611943565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112611a3c575f80fd5b8135611a4f611a4a826119e8565b611999565b818152846020838601011115611a63575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215611a92575f80fd5b843593506020850135611aa481611935565b92506040850135611ab48161160b565b9150606085013567ffffffffffffffff811115611acf575f80fd5b611adb87828801611a2d565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611b24575f80fd5b813580151581146104f1575f80fd5b8035611b3e8161160b565b919050565b5f805f8060808587031215611b56575f80fd5b843567ffffffffffffffff811115611b6c575f80fd5b8501601f81018713611b7c575f80fd5b803567ffffffffffffffff811115611b9657611b96611943565b8060051b611ba660208201611999565b9182526020818401810192908101908a841115611bc1575f80fd5b6020850194505b83851015611bef5784359250611bdd8361160b565b82825260209485019490910190611bc8565b8098505050505050611c0360208601611b33565b925060408501359150611c1860608601611b33565b905092959194509250565b5f60208284031215611c33575f80fd5b81516104f18161160b565b5f60208284031215611c4e575f80fd5b5051919050565b80820180821115610491577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60208284031215611c9d575f80fd5b813567ffffffffffffffff811115611cb3575f80fd5b820160408185031215611cc4575f80fd5b6040805190810167ffffffffffffffff81118282101715611ce757611ce7611943565b604052813567ffffffffffffffff811115611d00575f80fd5b611d0c86828501611a2d565b825250602082013567ffffffffffffffff811115611d28575f80fd5b611d3486828501611a2d565b602083015250949350505050565b8051611b3e81611935565b5f60208284031215611d5d575f80fd5b815167ffffffffffffffff811115611d73575f80fd5b820160608185031215611d84575f80fd5b611d8c611970565b8151611d978161160b565b8152602082015167ffffffffffffffff811115611db2575f80fd5b8201601f81018613611dc2575f80fd5b8051611dd0611a4a826119e8565b818152876020838501011115611de4575f80fd5b8160208401602083015e5f60208383010152806020850152505050611e0b60408301611d42565b604082015294935050505056fea2646970667358221220e1a4eb8e4809ee8d5dfab1bbe1c9cd5e180409a2d1dcf6d0089ac5ca307498c364736f6c634300081a0033",f6="0x60806040526004361061016d575f3560e01c8063715018a6116100c6578063a1d2756f1161007c578063f04e283e11610057578063f04e283e146103e5578063f2fde38b146103f8578063fee81cf41461040b575f80fd5b8063a1d2756f14610392578063ce5c134f146103b1578063d3de6e75146103c6575f80fd5b806384b0196e116100ac57806384b0196e146103035780638da5cb5b1461032a57806399d32fc41461037d575f80fd5b8063715018a6146102cd578063736c0d5b146102d5575f80fd5b80632f9e058b116101265780634f361c9a116101015780634f361c9a1461029e57806354d1f13d146102b2578063703b6900146102ba575f80fd5b80632f9e058b146102355780634359d28a14610260578063439fab911461027f575f80fd5b8063256929621161015657806325692962146101d257806328d6183b146101dc5780632e75ab5014610216575f80fd5b806301ffc9a7146101715780630668e9d4146101a5575b5f80fd5b34801561017c575f80fd5b5061019061018b3660046115cc565b61043c565b60405190151581526020015b60405180910390f35b3480156101b0575f80fd5b506101c46101bf36600461162c565b610497565b60405190815260200161019c565b6101da6104f8565b005b3480156101e7575f80fd5b506040517fb0fafe5800000000000000000000000000000000000000000000000000000000815260200161019c565b348015610221575f80fd5b506101da610230366004611662565b610545565b348015610240575f80fd5b506101c461024f366004611662565b60016020525f908152604090205481565b34801561026b575f80fd5b506101da61027a3660046116c1565b6105d8565b34801561028a575f80fd5b506101da61029936600461176b565b6106d4565b3480156102a9575f80fd5b506101c46108ae565b6101da6108bc565b6101906102c83660046117aa565b6108f5565b6101da610b03565b3480156102e0575f80fd5b506101906102ef36600461180f565b5f6020819052908152604090205460ff1681565b34801561030e575f80fd5b50610317610b16565b60405161019c9796959493929190611876565b348015610335575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019c565b348015610388575f80fd5b506101c460035481565b34801561039d575f80fd5b506101da6103ac36600461180f565b610bbe565b3480156103bc575f80fd5b506101c460025481565b3480156103d1575f80fd5b506101c46103e0366004611a7f565b610c0d565b6101da6103f336600461180f565b610ca0565b6101da61040636600461180f565b610cdd565b348015610416575f80fd5b506101c461042536600461180f565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb0fafe58000000000000000000000000000000000000000000000000000000001480610491575061049182610d03565b92915050565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016908201525f906074016040516020818303038152906040528051906020012090505b9392505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b61054d610d58565b60065473ffffffffffffffffffffffffffffffffffffffff161561059d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527f64374f1a975abb9bc8e8857d704b9ead41989ff599d90c1e8f7d34bc2ebea92a9060200160405180910390a150565b6105e0610d58565b828114610619576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156106cd5782828281811061063557610635611ae7565b905060200201602081019061064a9190611b14565b5f8087878581811061065e5761065e611ae7565b9050602002016020810190610673919061180f565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161061b565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107255760018160011c14303b1061071c5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f80808061073686880188611b43565b9350935093509350610760845f8151811061075357610753611ae7565b6020026020010151610d8d565b6002829055600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555f5b845181101561082a5760015f808784815181106107c6576107c6611ae7565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016107a7565b5050600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9390931692909217909155505080156108a9576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f6108b7610df0565b905090565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f806108ff610df0565b905080341461093a576040517faf2eb37300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109488888888888610ea5565b90505f821180156109565750805b15610af857600554604080517f39a51be500000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916339a51be59160048083019260209291908290030181865afa1580156109c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ec9190611c23565b90505f8173ffffffffffffffffffffffffffffffffffffffff16846040515f6040518083038185875af1925050503d805f8114610a44576040519150601f19603f3d011682016040523d82523d5f602084013e610a49565b606091505b5050905080610a84576040517f4033e4e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b888a8973ffffffffffffffffffffffffffffffffffffffff167fb671e5a07ab020a275a7ca33dc2074f9761157b5f6e779751e8fd89909dafc6e8786604051610aed92919091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b60405180910390a450505b979650505050505050565b610b0b610d58565b610b145f610f1b565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610bac604080518082018252601d81527f50617961626c654c696d697465645369676e657256616c696461746f720000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b610bc6610d58565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f90610c979060c00160405160208183030381529060405280519060200120610f80565b95945050505050565b610ca8610d58565b63389a75e1600c52805f526020600c208054421115610cce57636f5e88185f526004601cfd5b5f9055610cda81610f1b565b50565b610ce5610d58565b8060601b610cfa57637448fbae5f526004601cfd5b610cda81610f1b565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610491575061049182610fac565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b14576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b6006545f9073ffffffffffffffffffffffffffffffffffffffff1615610e9e5760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166399d32fc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e7a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b79190611c3e565b5060035490565b5f610eb1868686611001565b610f04576040517f059b704500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b610f11868686868661105b565b9695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610f896111e3565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb0fafe580000000000000000000000000000000000000000000000000000000014806104915750610491826112b0565b5f8061100e858585610497565b5f818152600160208190526040822054929350909161102c91611c55565b9050600254811115611042575f925050506104f1565b5f91825260016020819052604090922055949350505050565b6005545f9073ffffffffffffffffffffffffffffffffffffffff1633146110ae576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110bb83850185611c8d565b90505f815f01518060200190518101906110d59190611d4d565b90505f6110ec898360400151898660200151610c0d565b905087826040015160ff16116111405760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff909116600482015260248101899052604401610efb565b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1661119f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111ab6004828a611305565b602082015182516111d69173ffffffffffffffffffffffffffffffffffffffff909116908390611393565b9998505050505050505050565b5f805f80611255604080518082018252601d81527f50617961626c654c696d697465645369676e657256616c696461746f720000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610491575061049182611496565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a00000000000000000000000000000000000000000000000000000000600783111561135c57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c600116600118801561138957835f528560045260245ffd5b5090555050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416156104f157604051843b61144e578251604081146113d1576041811461140b575061148e565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261141e565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5180861860601b3d119250505f6060528060405261148e565b631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa905060208260443d01868b5afa9151911691141691505b509392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b220000000000000000000000000000000000000000000000000000000014806104915750610491825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c0000000000000000000000000000000000000000000000000000000014806104915750610491825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061049157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610491565b5f602082840312156115dc575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146104f1575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610cda575f80fd5b5f805f6060848603121561163e575f80fd5b833592506020840135915060408401356116578161160b565b809150509250925092565b5f60208284031215611672575f80fd5b5035919050565b5f8083601f840112611689575f80fd5b50813567ffffffffffffffff8111156116a0575f80fd5b6020830191508360208260051b85010111156116ba575f80fd5b9250929050565b5f805f80604085870312156116d4575f80fd5b843567ffffffffffffffff8111156116ea575f80fd5b6116f687828801611679565b909550935050602085013567ffffffffffffffff811115611715575f80fd5b61172187828801611679565b95989497509550505050565b5f8083601f84011261173d575f80fd5b50813567ffffffffffffffff811115611754575f80fd5b6020830191508360208285010111156116ba575f80fd5b5f806020838503121561177c575f80fd5b823567ffffffffffffffff811115611792575f80fd5b61179e8582860161172d565b90969095509350505050565b5f805f805f608086880312156117be575f80fd5b853594506020860135935060408601356117d78161160b565b9250606086013567ffffffffffffffff8111156117f2575f80fd5b6117fe8882890161172d565b969995985093965092949392505050565b5f6020828403121561181f575f80fd5b81356104f18161160b565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f6118b060e083018961182a565b82810360408401526118c2818961182a565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611924578351835260209384019390920191600101611906565b50909b9a5050505050505050505050565b60ff81168114610cda575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561199357611993611943565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156119e0576119e0611943565b604052919050565b5f67ffffffffffffffff821115611a0157611a01611943565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112611a3c575f80fd5b8135611a4f611a4a826119e8565b611999565b818152846020838601011115611a63575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215611a92575f80fd5b843593506020850135611aa481611935565b92506040850135611ab48161160b565b9150606085013567ffffffffffffffff811115611acf575f80fd5b611adb87828801611a2d565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611b24575f80fd5b813580151581146104f1575f80fd5b8035611b3e8161160b565b919050565b5f805f8060808587031215611b56575f80fd5b843567ffffffffffffffff811115611b6c575f80fd5b8501601f81018713611b7c575f80fd5b803567ffffffffffffffff811115611b9657611b96611943565b8060051b611ba660208201611999565b9182526020818401810192908101908a841115611bc1575f80fd5b6020850194505b83851015611bef5784359250611bdd8361160b565b82825260209485019490910190611bc8565b8098505050505050611c0360208601611b33565b925060408501359150611c1860608601611b33565b905092959194509250565b5f60208284031215611c33575f80fd5b81516104f18161160b565b5f60208284031215611c4e575f80fd5b5051919050565b80820180821115610491577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60208284031215611c9d575f80fd5b813567ffffffffffffffff811115611cb3575f80fd5b820160408185031215611cc4575f80fd5b6040805190810167ffffffffffffffff81118282101715611ce757611ce7611943565b604052813567ffffffffffffffff811115611d00575f80fd5b611d0c86828501611a2d565b825250602082013567ffffffffffffffff811115611d28575f80fd5b611d3486828501611a2d565b602083015250949350505050565b8051611b3e81611935565b5f60208284031215611d5d575f80fd5b815167ffffffffffffffff811115611d73575f80fd5b820160608185031215611d84575f80fd5b611d8c611970565b8151611d978161160b565b8152602082015167ffffffffffffffff811115611db2575f80fd5b8201601f81018613611dc2575f80fd5b8051611dd0611a4a826119e8565b818152876020838501011115611de4575f80fd5b8160208401602083015e5f60208383010152806020850152505050611e0b60408301611d42565b604082015294935050505056fea2646970667358221220e1a4eb8e4809ee8d5dfab1bbe1c9cd5e180409a2d1dcf6d0089ac5ca307498c364736f6c634300081a0033",e6={},b6={},q0={_format:K5,contractName:Y5,sourceName:Q5,abi:J5,bytecode:X5,deployedBytecode:f6,linkReferences:e6,deployedLinkReferences:b6},a6="hh-sol-artifact-1",t6="SignerValidator",d6="contracts/validators/SignerValidator.sol",n6=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"uint8",name:"available",type:"uint8"},{internalType:"uint256",name:"id",type:"uint256"}],name:"InvalidIncentive",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"validatorCaller",type:"address"}],name:"SignerValidatorInitialized",type:"event"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint8",name:"incentiveQuantity",type:"uint8"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"incentiveData",type:"bytes"}],name:"hashSignerData",outputs:[{internalType:"bytes32",name:"hashedSignerData",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"signers_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newCaller",type:"address"}],name:"setValidatorCaller",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"signers",outputs:[{internalType:"bool",name:"",type:"bool"}],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:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"claimData",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"}],c6="0x610120604052348015610010575f80fd5b50306080524660a0525f60c081905260e081905261010052610030610035565b61009a565b63409feecd19805460018116156100535763f92ee8a95f526004601cfd5b6001600160401b03808260011c14610095578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60805160a05160c05160e051610100516116766100c85f395f50505f50505f50505f50505f50506116765ff3fe6080604052600436106100ef575f3560e01c8063736c0d5b11610087578063d3de6e7511610057578063d3de6e7514610293578063f04e283e146102c0578063f2fde38b146102d3578063fee81cf4146102e6575f80fd5b8063736c0d5b146101cc57806384b0196e146101fa5780638da5cb5b14610221578063a1d2756f14610274575f80fd5b8063439fab91116100c2578063439fab911461018a57806354d1f13d146101a9578063703b6900146101b1578063715018a6146101c4575f80fd5b806301ffc9a7146100f3578063256929621461012757806328d6183b146101315780634359d28a1461016b575b5f80fd5b3480156100fe575f80fd5b5061011261010d366004610ec4565b610317565b60405190151581526020015b60405180910390f35b61012f610372565b005b34801561013c575f80fd5b506040517fb8ce7b2200000000000000000000000000000000000000000000000000000000815260200161011e565b348015610176575f80fd5b5061012f610185366004610f4b565b6103bf565b348015610195575f80fd5b5061012f6101a4366004610ff5565b6104bb565b61012f61068c565b6101126101bf366004611055565b6106c5565b61012f610851565b3480156101d7575f80fd5b506101126101e63660046110ba565b5f6020819052908152604090205460ff1681565b348015610205575f80fd5b5061020e610864565b60405161011e9796959493929190611121565b34801561022c575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161011e565b34801561027f575f80fd5b5061012f61028e3660046110ba565b61090c565b34801561029e575f80fd5b506102b26102ad36600461132a565b61095b565b60405190815260200161011e565b61012f6102ce3660046110ba565b6109ee565b61012f6102e13660046110ba565b610a2b565b3480156102f1575f80fd5b506102b26103003660046110ba565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b2200000000000000000000000000000000000000000000000000000000148061036c575061036c82610a51565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6103c7610aa6565b828114610400576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156104b45782828281811061041c5761041c611392565b905060200201602081019061043191906113bf565b5f8087878581811061044557610445611392565b905060200201602081019061045a91906110ba565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610402565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561050c5760018160011c14303b106105035763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8061051b848601866113ee565b91509150610541825f8151811061053457610534611392565b6020026020010151610adb565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555f5b82518110156106065760015f808584815181106105a2576105a2611392565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610583565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527f8098ebafc4f95fe5a577ff9be7c88d4445b6ef0acf915dad2b538c81b0384d7c9060200160405180910390a150508015610687576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6002545f9073ffffffffffffffffffffffffffffffffffffffff163314610718576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610725838501856114b5565b90505f815f015180602001905181019061073f9190611575565b90505f61075689836040015189866020015161095b565b905087826040015160ff16116107ae5760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff90911660048201526024810189905260440160405180910390fd5b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1661080d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108196001828a610b3e565b602082015182516108449173ffffffffffffffffffffffffffffffffffffffff909116908390610bcc565b9998505050505050505050565b610859610aa6565b6108625f610cd0565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108fa604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b610914610aa6565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109e59060c00160405160208183030381529060405280519060200120610d35565b95945050505050565b6109f6610aa6565b63389a75e1600c52805f526020600c208054421115610a1c57636f5e88185f526004601cfd5b5f9055610a2881610cd0565b50565b610a33610aa6565b8060601b610a4857637448fbae5f526004601cfd5b610a2881610cd0565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c00000000000000000000000000000000000000000000000000000000148061036c575061036c82610d61565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610862576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610b9557815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610bc257835f528560045260245ffd5b5090555050505050565b5f73ffffffffffffffffffffffffffffffffffffffff841615610cc957604051843b610c8757825160408114610c0a5760418114610c445750610cc7565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610c57565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5180861860601b3d119250505f60605280604052610cc7565b631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa905060208260443d01868b5afa9151911691141691505b505b9392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d3e610df7565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061036c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461036c565b5f805f80610e69604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f60208284031215610ed4575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cc9575f80fd5b5f8083601f840112610f13575f80fd5b50813567ffffffffffffffff811115610f2a575f80fd5b6020830191508360208260051b8501011115610f44575f80fd5b9250929050565b5f805f8060408587031215610f5e575f80fd5b843567ffffffffffffffff811115610f74575f80fd5b610f8087828801610f03565b909550935050602085013567ffffffffffffffff811115610f9f575f80fd5b610fab87828801610f03565b95989497509550505050565b5f8083601f840112610fc7575f80fd5b50813567ffffffffffffffff811115610fde575f80fd5b602083019150836020828501011115610f44575f80fd5b5f8060208385031215611006575f80fd5b823567ffffffffffffffff81111561101c575f80fd5b61102885828601610fb7565b90969095509350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a28575f80fd5b5f805f805f60808688031215611069575f80fd5b8535945060208601359350604086013561108281611034565b9250606086013567ffffffffffffffff81111561109d575f80fd5b6110a988828901610fb7565b969995985093965092949392505050565b5f602082840312156110ca575f80fd5b8135610cc981611034565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61115b60e08301896110d5565b828103604084015261116d81896110d5565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156111cf5783518352602093840193909201916001016111b1565b50909b9a5050505050505050505050565b60ff81168114610a28575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561123e5761123e6111ee565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561128b5761128b6111ee565b604052919050565b5f67ffffffffffffffff8211156112ac576112ac6111ee565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f8301126112e7575f80fd5b81356112fa6112f582611293565b611244565b81815284602083860101111561130e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f806080858703121561133d575f80fd5b84359350602085013561134f816111e0565b9250604085013561135f81611034565b9150606085013567ffffffffffffffff81111561137a575f80fd5b611386878288016112d8565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156113cf575f80fd5b81358015158114610cc9575f80fd5b80356113e981611034565b919050565b5f80604083850312156113ff575f80fd5b823567ffffffffffffffff811115611415575f80fd5b8301601f81018513611425575f80fd5b803567ffffffffffffffff81111561143f5761143f6111ee565b8060051b61144f60208201611244565b9182526020818401810192908101908884111561146a575f80fd5b6020850194505b83851015611498578435925061148683611034565b82825260209485019490910190611471565b80965050505050506114ac602084016113de565b90509250929050565b5f602082840312156114c5575f80fd5b813567ffffffffffffffff8111156114db575f80fd5b8201604081850312156114ec575f80fd5b6040805190810167ffffffffffffffff8111828210171561150f5761150f6111ee565b604052813567ffffffffffffffff811115611528575f80fd5b611534868285016112d8565b825250602082013567ffffffffffffffff811115611550575f80fd5b61155c868285016112d8565b602083015250949350505050565b80516113e9816111e0565b5f60208284031215611585575f80fd5b815167ffffffffffffffff81111561159b575f80fd5b8201606081850312156115ac575f80fd5b6115b461121b565b81516115bf81611034565b8152602082015167ffffffffffffffff8111156115da575f80fd5b8201601f810186136115ea575f80fd5b80516115f86112f582611293565b81815287602083850101111561160c575f80fd5b8160208401602083015e5f602083830101528060208501525050506116336040830161156a565b604082015294935050505056fea2646970667358221220f7061ae1fafcd09652ad5530297566c1cd38521ee14fe59e5560787d2395e1c464736f6c634300081a0033",i6="0x6080604052600436106100ef575f3560e01c8063736c0d5b11610087578063d3de6e7511610057578063d3de6e7514610293578063f04e283e146102c0578063f2fde38b146102d3578063fee81cf4146102e6575f80fd5b8063736c0d5b146101cc57806384b0196e146101fa5780638da5cb5b14610221578063a1d2756f14610274575f80fd5b8063439fab91116100c2578063439fab911461018a57806354d1f13d146101a9578063703b6900146101b1578063715018a6146101c4575f80fd5b806301ffc9a7146100f3578063256929621461012757806328d6183b146101315780634359d28a1461016b575b5f80fd5b3480156100fe575f80fd5b5061011261010d366004610ec4565b610317565b60405190151581526020015b60405180910390f35b61012f610372565b005b34801561013c575f80fd5b506040517fb8ce7b2200000000000000000000000000000000000000000000000000000000815260200161011e565b348015610176575f80fd5b5061012f610185366004610f4b565b6103bf565b348015610195575f80fd5b5061012f6101a4366004610ff5565b6104bb565b61012f61068c565b6101126101bf366004611055565b6106c5565b61012f610851565b3480156101d7575f80fd5b506101126101e63660046110ba565b5f6020819052908152604090205460ff1681565b348015610205575f80fd5b5061020e610864565b60405161011e9796959493929190611121565b34801561022c575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161011e565b34801561027f575f80fd5b5061012f61028e3660046110ba565b61090c565b34801561029e575f80fd5b506102b26102ad36600461132a565b61095b565b60405190815260200161011e565b61012f6102ce3660046110ba565b6109ee565b61012f6102e13660046110ba565b610a2b565b3480156102f1575f80fd5b506102b26103003660046110ba565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b2200000000000000000000000000000000000000000000000000000000148061036c575061036c82610a51565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6103c7610aa6565b828114610400576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156104b45782828281811061041c5761041c611392565b905060200201602081019061043191906113bf565b5f8087878581811061044557610445611392565b905060200201602081019061045a91906110ba565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610402565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561050c5760018160011c14303b106105035763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8061051b848601866113ee565b91509150610541825f8151811061053457610534611392565b6020026020010151610adb565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555f5b82518110156106065760015f808584815181106105a2576105a2611392565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610583565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527f8098ebafc4f95fe5a577ff9be7c88d4445b6ef0acf915dad2b538c81b0384d7c9060200160405180910390a150508015610687576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6002545f9073ffffffffffffffffffffffffffffffffffffffff163314610718576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610725838501856114b5565b90505f815f015180602001905181019061073f9190611575565b90505f61075689836040015189866020015161095b565b905087826040015160ff16116107ae5760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff90911660048201526024810189905260440160405180910390fd5b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1661080d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108196001828a610b3e565b602082015182516108449173ffffffffffffffffffffffffffffffffffffffff909116908390610bcc565b9998505050505050505050565b610859610aa6565b6108625f610cd0565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108fa604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b610914610aa6565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109e59060c00160405160208183030381529060405280519060200120610d35565b95945050505050565b6109f6610aa6565b63389a75e1600c52805f526020600c208054421115610a1c57636f5e88185f526004601cfd5b5f9055610a2881610cd0565b50565b610a33610aa6565b8060601b610a4857637448fbae5f526004601cfd5b610a2881610cd0565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c00000000000000000000000000000000000000000000000000000000148061036c575061036c82610d61565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610862576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610b9557815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610bc257835f528560045260245ffd5b5090555050505050565b5f73ffffffffffffffffffffffffffffffffffffffff841615610cc957604051843b610c8757825160408114610c0a5760418114610c445750610cc7565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610c57565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5180861860601b3d119250505f60605280604052610cc7565b631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa905060208260443d01868b5afa9151911691141691505b505b9392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d3e610df7565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061036c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461036c565b5f805f80610e69604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f60208284031215610ed4575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cc9575f80fd5b5f8083601f840112610f13575f80fd5b50813567ffffffffffffffff811115610f2a575f80fd5b6020830191508360208260051b8501011115610f44575f80fd5b9250929050565b5f805f8060408587031215610f5e575f80fd5b843567ffffffffffffffff811115610f74575f80fd5b610f8087828801610f03565b909550935050602085013567ffffffffffffffff811115610f9f575f80fd5b610fab87828801610f03565b95989497509550505050565b5f8083601f840112610fc7575f80fd5b50813567ffffffffffffffff811115610fde575f80fd5b602083019150836020828501011115610f44575f80fd5b5f8060208385031215611006575f80fd5b823567ffffffffffffffff81111561101c575f80fd5b61102885828601610fb7565b90969095509350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a28575f80fd5b5f805f805f60808688031215611069575f80fd5b8535945060208601359350604086013561108281611034565b9250606086013567ffffffffffffffff81111561109d575f80fd5b6110a988828901610fb7565b969995985093965092949392505050565b5f602082840312156110ca575f80fd5b8135610cc981611034565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61115b60e08301896110d5565b828103604084015261116d81896110d5565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156111cf5783518352602093840193909201916001016111b1565b50909b9a5050505050505050505050565b60ff81168114610a28575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561123e5761123e6111ee565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561128b5761128b6111ee565b604052919050565b5f67ffffffffffffffff8211156112ac576112ac6111ee565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f8301126112e7575f80fd5b81356112fa6112f582611293565b611244565b81815284602083860101111561130e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f806080858703121561133d575f80fd5b84359350602085013561134f816111e0565b9250604085013561135f81611034565b9150606085013567ffffffffffffffff81111561137a575f80fd5b611386878288016112d8565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156113cf575f80fd5b81358015158114610cc9575f80fd5b80356113e981611034565b919050565b5f80604083850312156113ff575f80fd5b823567ffffffffffffffff811115611415575f80fd5b8301601f81018513611425575f80fd5b803567ffffffffffffffff81111561143f5761143f6111ee565b8060051b61144f60208201611244565b9182526020818401810192908101908884111561146a575f80fd5b6020850194505b83851015611498578435925061148683611034565b82825260209485019490910190611471565b80965050505050506114ac602084016113de565b90509250929050565b5f602082840312156114c5575f80fd5b813567ffffffffffffffff8111156114db575f80fd5b8201604081850312156114ec575f80fd5b6040805190810167ffffffffffffffff8111828210171561150f5761150f6111ee565b604052813567ffffffffffffffff811115611528575f80fd5b611534868285016112d8565b825250602082013567ffffffffffffffff811115611550575f80fd5b61155c868285016112d8565b602083015250949350505050565b80516113e9816111e0565b5f60208284031215611585575f80fd5b815167ffffffffffffffff81111561159b575f80fd5b8201606081850312156115ac575f80fd5b6115b461121b565b81516115bf81611034565b8152602082015167ffffffffffffffff8111156115da575f80fd5b8201601f810186136115ea575f80fd5b80516115f86112f582611293565b81815287602083850101111561160c575f80fd5b8160208401602083015e5f602083830101528060208501525050506116336040830161156a565b604082015294935050505056fea2646970667358221220f7061ae1fafcd09652ad5530297566c1cd38521ee14fe59e5560787d2395e1c464736f6c634300081a0033",s6={},r6={},j0={_format:a6,contractName:t6,sourceName:d6,abi:n6,bytecode:c6,deployedBytecode:i6,linkReferences:s6,deployedLinkReferences:r6};class p6 extends t.BaseError{constructor({docsPath:e}){super(["A constructor was not found on the ABI.","Make sure you are using the correct ABI and that the constructor exists on it."].join(`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("@boostxyz/sdk"),t=require("../utils-dz3mUqTs.cjs"),gf="hh-sol-artifact-1",Mf="ContractAction",If="contracts/actions/ContractAction.sol",xf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"uint256",name:"targetChainId",type:"uint256"}],name:"TargetChainUnsupported",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"bytes_",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"target",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"value",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],Af="0x60a0604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6080516108c46100945f395f61017601526108c45ff3fe6080604052600436106100ad575f3560e01c8063439fab9111610066578063d4b839921161004c578063d4b8399214610215578063d7768c4714610241578063ea3d508a1461026d575f80fd5b8063439fab91146101e05780639a8a059214610201575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb146101655780633fa4f245146101bd575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb3660046106c1565b61029e565b60405190151581526020015b60405180910390f35b6100f86100f33660046106da565b6102f9565b6040516100dc929190610794565b348015610111575f80fd5b507f6c3129aa000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100dc565b348015610170575f80fd5b506101987f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101c8575f80fd5b506101d260025481565b6040519081526020016100dc565b3480156101eb575f80fd5b506101ff6101fa3660046106da565b6103e6565b005b34801561020c575f80fd5b506101d25f5481565b348015610220575f80fd5b506001546101989073ffffffffffffffffffffffffffffffffffffffff1681565b34801561024c575f80fd5b5061026061025b3660046106da565b610486565b6040516100dc91906107b6565b348015610278575f80fd5b506001546101349074010000000000000000000000000000000000000000900460e01b81565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa0000000000000000000000000000000000000000000000000000000014806102f357506102f3826104b9565b92915050565b5f6060465f5414610344575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161033b91815260200190565b60405180910390fd5b6001546002545f91829173ffffffffffffffffffffffffffffffffffffffff82169161038c9074010000000000000000000000000000000000000000900460e01b898961050e565b60405161039991906107c8565b5f6040518083038185875af1925050503d805f81146103d3576040519150601f19603f3d011682016040523d82523d5f602084013e6103d8565b606091505b509097909650945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156104375760018160011c14303b1061042e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061044c610447838501856107de565b61053a565b8015610481576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001546060906104b29074010000000000000000000000000000000000000000900460e01b848461050e565b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102f357506102f3826105bd565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b610542610653565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102f357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460011661068a5763d7e6bcf85f526004601cfd5b50565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146106bc575f80fd5b919050565b5f602082840312156106d1575f80fd5b6104b28261068d565b5f80602083850312156106eb575f80fd5b823567ffffffffffffffff811115610701575f80fd5b8301601f81018513610711575f80fd5b803567ffffffffffffffff811115610727575f80fd5b856020828401011115610738575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f6107ae6040830184610748565b949350505050565b602081525f6104b26020830184610748565b5f82518060208501845e5f920191825250919050565b5f60808284031280156107ef575f80fd5b506040516080810167ffffffffffffffff81118282101715610838577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282358152602083013573ffffffffffffffffffffffffffffffffffffffff81168114610865575f80fd5b60208201526108766040840161068d565b6040820152606092830135928101929092525091905056fea26469706673582212209e7bb8ad23bfde663bc9358b94d80b7c6bde4d2794d20223485f3e582bd7012b64736f6c634300081a0033",Ef="0x6080604052600436106100ad575f3560e01c8063439fab9111610066578063d4b839921161004c578063d4b8399214610215578063d7768c4714610241578063ea3d508a1461026d575f80fd5b8063439fab91146101e05780639a8a059214610201575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb146101655780633fa4f245146101bd575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb3660046106c1565b61029e565b60405190151581526020015b60405180910390f35b6100f86100f33660046106da565b6102f9565b6040516100dc929190610794565b348015610111575f80fd5b507f6c3129aa000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100dc565b348015610170575f80fd5b506101987f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101c8575f80fd5b506101d260025481565b6040519081526020016100dc565b3480156101eb575f80fd5b506101ff6101fa3660046106da565b6103e6565b005b34801561020c575f80fd5b506101d25f5481565b348015610220575f80fd5b506001546101989073ffffffffffffffffffffffffffffffffffffffff1681565b34801561024c575f80fd5b5061026061025b3660046106da565b610486565b6040516100dc91906107b6565b348015610278575f80fd5b506001546101349074010000000000000000000000000000000000000000900460e01b81565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa0000000000000000000000000000000000000000000000000000000014806102f357506102f3826104b9565b92915050565b5f6060465f5414610344575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161033b91815260200190565b60405180910390fd5b6001546002545f91829173ffffffffffffffffffffffffffffffffffffffff82169161038c9074010000000000000000000000000000000000000000900460e01b898961050e565b60405161039991906107c8565b5f6040518083038185875af1925050503d805f81146103d3576040519150601f19603f3d011682016040523d82523d5f602084013e6103d8565b606091505b509097909650945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156104375760018160011c14303b1061042e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061044c610447838501856107de565b61053a565b8015610481576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001546060906104b29074010000000000000000000000000000000000000000900460e01b848461050e565b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102f357506102f3826105bd565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b610542610653565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102f357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460011661068a5763d7e6bcf85f526004601cfd5b50565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146106bc575f80fd5b919050565b5f602082840312156106d1575f80fd5b6104b28261068d565b5f80602083850312156106eb575f80fd5b823567ffffffffffffffff811115610701575f80fd5b8301601f81018513610711575f80fd5b803567ffffffffffffffff811115610727575f80fd5b856020828401011115610738575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f6107ae6040830184610748565b949350505050565b602081525f6104b26020830184610748565b5f82518060208501845e5f920191825250919050565b5f60808284031280156107ef575f80fd5b506040516080810167ffffffffffffffff81118282101715610838577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282358152602083013573ffffffffffffffffffffffffffffffffffffffff81168114610865575f80fd5b60208201526108766040840161068d565b6040820152606092830135928101929092525091905056fea26469706673582212209e7bb8ad23bfde663bc9358b94d80b7c6bde4d2794d20223485f3e582bd7012b64736f6c634300081a0033",Rf={},Of={},O0={_format:gf,contractName:Mf,sourceName:If,abi:xf,bytecode:Af,deployedBytecode:Ef,linkReferences:Rf,deployedLinkReferences:Of},Cf="hh-sol-artifact-1",_f="ERC721MintAction",zf="contracts/actions/ERC721MintAction.sol",Bf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"uint256",name:"targetChainId",type:"uint256"}],name:"TargetChainUnsupported",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"target",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"success",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"validated",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"value",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],Nf="0x60a0604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b608051610f896100945f395f6102100152610f895ff3fe60806040526004361061013d575f3560e01c8063715018a6116100bb578063d7768c4711610071578063f04e283e11610057578063f04e283e146103ba578063f2fde38b146103cd578063fee81cf4146103e0575f80fd5b8063d7768c471461035d578063ea3d508a14610389575f80fd5b80639a8a0592116100a15780639a8a0592146102ef578063bec9527714610303578063d4b8399214610331575f80fd5b8063715018a6146102b45780638da5cb5b146102bc575f80fd5b8063393df8cb11610110578063439fab91116100f6578063439fab911461027a57806354d1f13d14610299578063703b6900146102a1575f80fd5b8063393df8cb146101ff5780633fa4f24514610257575f80fd5b806301ffc9a71461014157806309c5eabe14610175578063256929621461019657806328d6183b146101a0575b5f80fd5b34801561014c575f80fd5b5061016061015b366004610b6a565b610411565b60405190151581526020015b60405180910390f35b610188610183366004610bc8565b61046c565b60405161016c929190610c53565b61019e6104a1565b005b3480156101ab575f80fd5b507f97e083eb000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161016c565b34801561020a575f80fd5b506102327f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610262575f80fd5b5061026c60025481565b60405190815260200161016c565b348015610285575f80fd5b5061019e610294366004610bc8565b6104ee565b61019e61058e565b6101606102af366004610c96565b6105c7565b61019e610705565b3480156102c7575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610232565b3480156102fa575f80fd5b5061026c5f5481565b34801561030e575f80fd5b5061016061031d366004610cfb565b60036020525f908152604090205460ff1681565b34801561033c575f80fd5b506001546102329073ffffffffffffffffffffffffffffffffffffffff1681565b348015610368575f80fd5b5061037c610377366004610bc8565b610718565b60405161016c9190610d12565b348015610394575f80fd5b506001546101ce9074010000000000000000000000000000000000000000900460e01b81565b61019e6103c8366004610d24565b61072b565b61019e6103db366004610d24565b610768565b3480156103eb575f80fd5b5061026c6103fa366004610d24565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f97e083eb00000000000000000000000000000000000000000000000000000000148061046657506104668261078e565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561053f5760018160011c14303b106105365763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061055461054f83850185610dbb565b6107e3565b8015610589576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80806105d684860186610e2e565b915091505f816105e590610ef3565b6001546040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810183905291925073ffffffffffffffffffffffffffffffffffffffff85811692911690636352211e90602401602060405180830381865afa158015610658573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067c9190610f38565b73ffffffffffffffffffffffffffffffffffffffff161480156106ad57505f8181526003602052604090205460ff16155b156106f5575f90815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915592506106fc915050565b5f93505050505b95945050505050565b61070d61086f565b6107165f6108a4565b565b60606107248383610909565b9392505050565b61073361086f565b63389a75e1600c52805f526020600c20805442111561075957636f5e88185f526004601cfd5b5f9055610765816108a4565b50565b61077061086f565b8060601b61078557637448fbae5f526004601cfd5b610765816108a4565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c000000000000000000000000000000000000000000000000000000001480610466575061046682610935565b6107eb61098a565b6107f4336109c1565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610716576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b6001546060906107249074010000000000000000000000000000000000000000900460e01b8484610a24565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa000000000000000000000000000000000000000000000000000000001480610466575061046682610a50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546001166107655763d7e6bcf85f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806104665750610466825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061046657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610466565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610b65575f80fd5b919050565b5f60208284031215610b7a575f80fd5b61072482610b36565b5f8083601f840112610b93575f80fd5b50813567ffffffffffffffff811115610baa575f80fd5b602083019150836020828501011115610bc1575f80fd5b9250929050565b5f8060208385031215610bd9575f80fd5b823567ffffffffffffffff811115610bef575f80fd5b610bfb85828601610b83565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f610c6d6040830184610c07565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610765575f80fd5b5f805f805f60808688031215610caa575f80fd5b85359450602086013593506040860135610cc381610c75565b9250606086013567ffffffffffffffff811115610cde575f80fd5b610cea88828901610b83565b969995985093965092949392505050565b5f60208284031215610d0b575f80fd5b5035919050565b602081525f6107246020830184610c07565b5f60208284031215610d34575f80fd5b813561072481610c75565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610db357610db3610d3f565b604052919050565b5f6080828403128015610dcc575f80fd5b506040516080810167ffffffffffffffff81118282101715610df057610df0610d3f565b604052823581526020830135610e0581610c75565b6020820152610e1660408401610b36565b60408201526060928301359281019290925250919050565b5f8060408385031215610e3f575f80fd5b8235610e4a81610c75565b9150602083013567ffffffffffffffff811115610e65575f80fd5b8301601f81018513610e75575f80fd5b803567ffffffffffffffff811115610e8f57610e8f610d3f565b610ec060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610d6c565b818152866020838501011115610ed4575f80fd5b816020840160208301375f602083830101528093505050509250929050565b80516020808301519190811015610f32577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b5f60208284031215610f48575f80fd5b815161072481610c7556fea2646970667358221220f815d77f7ecadab31beb22cf28528f5b2b76f6b0fb06e668cc8049ed9626419b64736f6c634300081a0033",Pf="0x60806040526004361061013d575f3560e01c8063715018a6116100bb578063d7768c4711610071578063f04e283e11610057578063f04e283e146103ba578063f2fde38b146103cd578063fee81cf4146103e0575f80fd5b8063d7768c471461035d578063ea3d508a14610389575f80fd5b80639a8a0592116100a15780639a8a0592146102ef578063bec9527714610303578063d4b8399214610331575f80fd5b8063715018a6146102b45780638da5cb5b146102bc575f80fd5b8063393df8cb11610110578063439fab91116100f6578063439fab911461027a57806354d1f13d14610299578063703b6900146102a1575f80fd5b8063393df8cb146101ff5780633fa4f24514610257575f80fd5b806301ffc9a71461014157806309c5eabe14610175578063256929621461019657806328d6183b146101a0575b5f80fd5b34801561014c575f80fd5b5061016061015b366004610b6a565b610411565b60405190151581526020015b60405180910390f35b610188610183366004610bc8565b61046c565b60405161016c929190610c53565b61019e6104a1565b005b3480156101ab575f80fd5b507f97e083eb000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161016c565b34801561020a575f80fd5b506102327f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610262575f80fd5b5061026c60025481565b60405190815260200161016c565b348015610285575f80fd5b5061019e610294366004610bc8565b6104ee565b61019e61058e565b6101606102af366004610c96565b6105c7565b61019e610705565b3480156102c7575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610232565b3480156102fa575f80fd5b5061026c5f5481565b34801561030e575f80fd5b5061016061031d366004610cfb565b60036020525f908152604090205460ff1681565b34801561033c575f80fd5b506001546102329073ffffffffffffffffffffffffffffffffffffffff1681565b348015610368575f80fd5b5061037c610377366004610bc8565b610718565b60405161016c9190610d12565b348015610394575f80fd5b506001546101ce9074010000000000000000000000000000000000000000900460e01b81565b61019e6103c8366004610d24565b61072b565b61019e6103db366004610d24565b610768565b3480156103eb575f80fd5b5061026c6103fa366004610d24565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f97e083eb00000000000000000000000000000000000000000000000000000000148061046657506104668261078e565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561053f5760018160011c14303b106105365763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061055461054f83850185610dbb565b6107e3565b8015610589576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80806105d684860186610e2e565b915091505f816105e590610ef3565b6001546040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810183905291925073ffffffffffffffffffffffffffffffffffffffff85811692911690636352211e90602401602060405180830381865afa158015610658573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067c9190610f38565b73ffffffffffffffffffffffffffffffffffffffff161480156106ad57505f8181526003602052604090205460ff16155b156106f5575f90815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915592506106fc915050565b5f93505050505b95945050505050565b61070d61086f565b6107165f6108a4565b565b60606107248383610909565b9392505050565b61073361086f565b63389a75e1600c52805f526020600c20805442111561075957636f5e88185f526004601cfd5b5f9055610765816108a4565b50565b61077061086f565b8060601b61078557637448fbae5f526004601cfd5b610765816108a4565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c000000000000000000000000000000000000000000000000000000001480610466575061046682610935565b6107eb61098a565b6107f4336109c1565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610716576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b6001546060906107249074010000000000000000000000000000000000000000900460e01b8484610a24565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa000000000000000000000000000000000000000000000000000000001480610466575061046682610a50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546001166107655763d7e6bcf85f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806104665750610466825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061046657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610466565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610b65575f80fd5b919050565b5f60208284031215610b7a575f80fd5b61072482610b36565b5f8083601f840112610b93575f80fd5b50813567ffffffffffffffff811115610baa575f80fd5b602083019150836020828501011115610bc1575f80fd5b9250929050565b5f8060208385031215610bd9575f80fd5b823567ffffffffffffffff811115610bef575f80fd5b610bfb85828601610b83565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f610c6d6040830184610c07565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610765575f80fd5b5f805f805f60808688031215610caa575f80fd5b85359450602086013593506040860135610cc381610c75565b9250606086013567ffffffffffffffff811115610cde575f80fd5b610cea88828901610b83565b969995985093965092949392505050565b5f60208284031215610d0b575f80fd5b5035919050565b602081525f6107246020830184610c07565b5f60208284031215610d34575f80fd5b813561072481610c75565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610db357610db3610d3f565b604052919050565b5f6080828403128015610dcc575f80fd5b506040516080810167ffffffffffffffff81118282101715610df057610df0610d3f565b604052823581526020830135610e0581610c75565b6020820152610e1660408401610b36565b60408201526060928301359281019290925250919050565b5f8060408385031215610e3f575f80fd5b8235610e4a81610c75565b9150602083013567ffffffffffffffff811115610e65575f80fd5b8301601f81018513610e75575f80fd5b803567ffffffffffffffff811115610e8f57610e8f610d3f565b610ec060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610d6c565b818152866020838501011115610ed4575f80fd5b816020840160208301375f602083830101528093505050509250929050565b80516020808301519190811015610f32577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b5f60208284031215610f48575f80fd5b815161072481610c7556fea2646970667358221220f815d77f7ecadab31beb22cf28528f5b2b76f6b0fb06e668cc8049ed9626419b64736f6c634300081a0033",$f={},Lf={},C0={_format:Cf,contractName:_f,sourceName:zf,abi:Bf,bytecode:Nf,deployedBytecode:Pf,linkReferences:$f,deployedLinkReferences:Lf},Hf="hh-sol-artifact-1",Ff="EventAction",kf="contracts/actions/EventAction.sol",Sf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{components:[{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"}],indexed:!1,internalType:"struct AEventAction.ActionClaimant",name:"actionClaimant",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepOne",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepTwo",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepThree",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepFour",type:"tuple"}],name:"EventActionInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getActionClaimant",outputs:[{components:[{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"}],internalType:"struct AEventAction.ActionClaimant",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"getActionStep",outputs:[{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],internalType:"struct AEventAction.ActionStep",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getActionSteps",outputs:[{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],internalType:"struct AEventAction.ActionStep[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getActionStepsCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"}],Df="0x60a0604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b608051611c666100945f395f6101510152611c665ff3fe6080604052600436106100ad575f3560e01c80639bc1cf8111610066578063d7768c471161004c578063d7768c4714610206578063dbdf211014610232578063ddd6ab0814610253575f80fd5b80639bc1cf81146101b9578063c26624e8146101da575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb14610140578063439fab9114610198575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb36600461128c565b610270565b60405190151581526020015b60405180910390f35b6100f86100f33660046112d2565b6102cb565b6040516100dc92919061138c565b348015610111575f80fd5b506040517f7687b0ed0000000000000000000000000000000000000000000000000000000081526020016100dc565b34801561014b575f80fd5b506101737f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101a3575f80fd5b506101b76101b23660046112d2565b610300565b005b3480156101c4575f80fd5b506101cd6103a0565b6040516100dc91906114a6565b3480156101e5575f80fd5b506101f96101f4366004611527565b61059f565b6040516100dc919061153e565b348015610211575f80fd5b506102256102203660046112d2565b61077a565b6040516100dc9190611550565b34801561023d575f80fd5b506102466107ae565b6040516100dc91906115b5565b34801561025e575f80fd5b506004546040519081526020016100dc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7687b0ed0000000000000000000000000000000000000000000000000000000014806102c557506102c58261085e565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156103515760018160011c14303b106103485763f92ee8a95f526004601cfd5b818160ff1b1b91505b50610366610361838501856118e7565b6108b3565b801561039b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b82821015610596578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff166001811115610410576104106113ae565b6001811115610421576104216113ae565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610494576104946113ae565b60078111156104a5576104a56113ae565b81528154602090910190610100900460ff1660058111156104c8576104c86113ae565b60058111156104d9576104d96113ae565b8152815462010000900463ffffffff166020820152600182018054604090920191610503906119e8565b80601f016020809104026020016040519081016040528092919081815260200182805461052f906119e8565b801561057a5780601f106105515761010080835404028352916020019161057a565b820191905f5260205f20905b81548152906001019060200180831161055d57829003601f168201915b50505050508152505081525050815260200190600101906103c3565b50505050905090565b6105a7611231565b600482815481106105ba576105ba611a39565b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156105fd576105fd6113ae565b600181111561060e5761060e6113ae565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610681576106816113ae565b6007811115610692576106926113ae565b81528154602090910190610100900460ff1660058111156106b5576106b56113ae565b60058111156106c6576106c66113ae565b8152815462010000900463ffffffff1660208201526001820180546040909201916106f0906119e8565b80601f016020809104026020016040519081016040528092919081815260200182805461071c906119e8565b80156107675780601f1061073e57610100808354040283529160200191610767565b820191905f5260205f20905b81548152906001019060200180831161074a57829003601f168201915b5050509190925250505090525092915050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040805160a081019091525f8054829060ff1660018111156107fc576107fc6113ae565b600181111561080d5761080d6113ae565b815260018201546020820152600282015463ffffffff81166040830152640100000000900473ffffffffffffffffffffffffffffffffffffffff166060820152600390910154608090910152919050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102c557506102c582611161565b6108bb6111f7565b805180515f8054909190829060ff1916600183818111156108de576108de6113ae565b02179055506020828101516001808401919091556040840151600284018054606087015173ffffffffffffffffffffffffffffffffffffffff16640100000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911663ffffffff90931692909217919091179055608090930151600390920191909155828101516004805480850182555f91909152815160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b8101918255928201517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c90930180549294919392909160ff199091169083818111156109ec576109ec6113ae565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610aad57610aad6113ae565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610af257610af26113ae565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610b469082611ab1565b505050604083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610bd757610bd76113ae565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610c9857610c986113ae565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610cdd57610cdd6113ae565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610d319082611ab1565b505050606083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610dc257610dc26113ae565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610e8357610e836113ae565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610ec857610ec86113ae565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610f1c9082611ab1565b505050608083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610fad57610fad6113ae565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff199091169083600781111561106e5761106e6113ae565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008360058111156110b3576110b36113ae565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff909116178155606082015160018201906111079082611ab1565b50505050507f7c54f3f7ef1d1e3acbe06bce75dbb6f17c64cb446c13bf354da8d7735b99f2a6815f01518260200151836040015184606001518560800151604051611156959493929190611bc8565b60405180910390a150565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102c557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102c5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460011661122e5763d7e6bcf85f526004601cfd5b50565b6040805160c081019091525f808252602082019081525f602082018190526040820181905260608201526080016112876040805160808101909152805f81526020015f81525f6020820152606060409091015290565b905290565b5f6020828403121561129c575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cb575f80fd5b9392505050565b5f80602083850312156112e3575f80fd5b823567ffffffffffffffff8111156112f9575f80fd5b8301601f81018513611309575f80fd5b803567ffffffffffffffff81111561131f575f80fd5b856020828401011115611330575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f6113a66040830184611340565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106113eb576113eb6113ae565b9052565b805182525f602082015161140660208501826113db565b5060ff604083015116604084015273ffffffffffffffffffffffffffffffffffffffff60608301511660608401526080820151608084015260a082015160c060a085015280516008811061145c5761145c6113ae565b60c0850152602081015160068110611476576114766113ae565b60e0850152604081015163ffffffff166101008501526060015160806101208501526113a6610140850182611340565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561151b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526115068583516113ef565b945060209384019391909101906001016114cc565b50929695505050505050565b5f60208284031215611537575f80fd5b5035919050565b602081525f6112cb60208301846113ef565b602081525f6112cb6020830184611340565b61156d8282516113db565b6020810151602083015263ffffffff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff6060820151166060830152608081015160808301525050565b60a081016102c58284611562565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611613576116136115c3565b60405290565b6040516080810167ffffffffffffffff81118282101715611613576116136115c3565b60405160c0810167ffffffffffffffff81118282101715611613576116136115c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156116a6576116a66115c3565b604052919050565b8035600281106116bc575f80fd5b919050565b803563ffffffff811681146116bc575f80fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146116bc575f80fd5b5f60a08284031215611707575f80fd5b61170f6115f0565b905061171a826116ae565b815260208281013590820152611732604083016116c1565b6040820152611743606083016116d4565b606082015260809182013591810191909152919050565b5f6080828403121561176a575f80fd5b611772611619565b9050813560088110611782575f80fd5b8152602082013560068110611795575f80fd5b60208201526117a6604083016116c1565b6040820152606082013567ffffffffffffffff8111156117c4575f80fd5b8201601f810184136117d4575f80fd5b803567ffffffffffffffff8111156117ee576117ee6115c3565b61181f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161165f565b818152856020838501011115611833575f80fd5b816020840160208301375f6020838301015280606085015250505092915050565b5f60c08284031215611864575f80fd5b61186c61163c565b82358152905061187e602083016116ae565b6020820152604082013560ff81168114611896575f80fd5b60408201526118a7606083016116d4565b60608201526080828101359082015260a082013567ffffffffffffffff8111156118cf575f80fd5b6118db8482850161175a565b60a08301525092915050565b5f602082840312156118f7575f80fd5b813567ffffffffffffffff81111561190d575f80fd5b8201610120818503121561191f575f80fd5b6119276115f0565b61193185836116f7565b815260a082013567ffffffffffffffff81111561194c575f80fd5b61195886828501611854565b60208301525060c082013567ffffffffffffffff811115611977575f80fd5b61198386828501611854565b60408301525060e082013567ffffffffffffffff8111156119a2575f80fd5b6119ae86828501611854565b60608301525061010082013567ffffffffffffffff8111156119ce575f80fd5b6119da86828501611854565b608083015250949350505050565b600181811c908216806119fc57607f821691505b602082108103611a33577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b601f82111561039b57805f5260205f20601f840160051c81016020851015611a8b5750805b601f840160051c820191505b81811015611aaa575f8155600101611a97565b5050505050565b815167ffffffffffffffff811115611acb57611acb6115c3565b611adf81611ad984546119e8565b84611a66565b6020601f821160018114611b30575f8315611afa5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611aaa565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611b7d5787850151825560209485019460019092019101611b5d565b5084821015611bb957868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b611bd28187611562565b61012060a08201525f611be96101208301876113ef565b82810360c0840152611bfb81876113ef565b905082810360e0840152611c0f81866113ef565b9050828103610100840152611c2481856113ef565b9897505050505050505056fea2646970667358221220ec29c85e9420d542351535cfbb2c79285bfb5d86014ee966669d793fa2a4481264736f6c634300081a0033",Gf="0x6080604052600436106100ad575f3560e01c80639bc1cf8111610066578063d7768c471161004c578063d7768c4714610206578063dbdf211014610232578063ddd6ab0814610253575f80fd5b80639bc1cf81146101b9578063c26624e8146101da575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb14610140578063439fab9114610198575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb36600461128c565b610270565b60405190151581526020015b60405180910390f35b6100f86100f33660046112d2565b6102cb565b6040516100dc92919061138c565b348015610111575f80fd5b506040517f7687b0ed0000000000000000000000000000000000000000000000000000000081526020016100dc565b34801561014b575f80fd5b506101737f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101a3575f80fd5b506101b76101b23660046112d2565b610300565b005b3480156101c4575f80fd5b506101cd6103a0565b6040516100dc91906114a6565b3480156101e5575f80fd5b506101f96101f4366004611527565b61059f565b6040516100dc919061153e565b348015610211575f80fd5b506102256102203660046112d2565b61077a565b6040516100dc9190611550565b34801561023d575f80fd5b506102466107ae565b6040516100dc91906115b5565b34801561025e575f80fd5b506004546040519081526020016100dc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7687b0ed0000000000000000000000000000000000000000000000000000000014806102c557506102c58261085e565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156103515760018160011c14303b106103485763f92ee8a95f526004601cfd5b818160ff1b1b91505b50610366610361838501856118e7565b6108b3565b801561039b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b82821015610596578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff166001811115610410576104106113ae565b6001811115610421576104216113ae565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610494576104946113ae565b60078111156104a5576104a56113ae565b81528154602090910190610100900460ff1660058111156104c8576104c86113ae565b60058111156104d9576104d96113ae565b8152815462010000900463ffffffff166020820152600182018054604090920191610503906119e8565b80601f016020809104026020016040519081016040528092919081815260200182805461052f906119e8565b801561057a5780601f106105515761010080835404028352916020019161057a565b820191905f5260205f20905b81548152906001019060200180831161055d57829003601f168201915b50505050508152505081525050815260200190600101906103c3565b50505050905090565b6105a7611231565b600482815481106105ba576105ba611a39565b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156105fd576105fd6113ae565b600181111561060e5761060e6113ae565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610681576106816113ae565b6007811115610692576106926113ae565b81528154602090910190610100900460ff1660058111156106b5576106b56113ae565b60058111156106c6576106c66113ae565b8152815462010000900463ffffffff1660208201526001820180546040909201916106f0906119e8565b80601f016020809104026020016040519081016040528092919081815260200182805461071c906119e8565b80156107675780601f1061073e57610100808354040283529160200191610767565b820191905f5260205f20905b81548152906001019060200180831161074a57829003601f168201915b5050509190925250505090525092915050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040805160a081019091525f8054829060ff1660018111156107fc576107fc6113ae565b600181111561080d5761080d6113ae565b815260018201546020820152600282015463ffffffff81166040830152640100000000900473ffffffffffffffffffffffffffffffffffffffff166060820152600390910154608090910152919050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102c557506102c582611161565b6108bb6111f7565b805180515f8054909190829060ff1916600183818111156108de576108de6113ae565b02179055506020828101516001808401919091556040840151600284018054606087015173ffffffffffffffffffffffffffffffffffffffff16640100000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911663ffffffff90931692909217919091179055608090930151600390920191909155828101516004805480850182555f91909152815160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b8101918255928201517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c90930180549294919392909160ff199091169083818111156109ec576109ec6113ae565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610aad57610aad6113ae565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610af257610af26113ae565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610b469082611ab1565b505050604083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610bd757610bd76113ae565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610c9857610c986113ae565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610cdd57610cdd6113ae565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610d319082611ab1565b505050606083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610dc257610dc26113ae565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610e8357610e836113ae565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610ec857610ec86113ae565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610f1c9082611ab1565b505050608083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610fad57610fad6113ae565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff199091169083600781111561106e5761106e6113ae565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008360058111156110b3576110b36113ae565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff909116178155606082015160018201906111079082611ab1565b50505050507f7c54f3f7ef1d1e3acbe06bce75dbb6f17c64cb446c13bf354da8d7735b99f2a6815f01518260200151836040015184606001518560800151604051611156959493929190611bc8565b60405180910390a150565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102c557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102c5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460011661122e5763d7e6bcf85f526004601cfd5b50565b6040805160c081019091525f808252602082019081525f602082018190526040820181905260608201526080016112876040805160808101909152805f81526020015f81525f6020820152606060409091015290565b905290565b5f6020828403121561129c575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112cb575f80fd5b9392505050565b5f80602083850312156112e3575f80fd5b823567ffffffffffffffff8111156112f9575f80fd5b8301601f81018513611309575f80fd5b803567ffffffffffffffff81111561131f575f80fd5b856020828401011115611330575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f6113a66040830184611340565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106113eb576113eb6113ae565b9052565b805182525f602082015161140660208501826113db565b5060ff604083015116604084015273ffffffffffffffffffffffffffffffffffffffff60608301511660608401526080820151608084015260a082015160c060a085015280516008811061145c5761145c6113ae565b60c0850152602081015160068110611476576114766113ae565b60e0850152604081015163ffffffff166101008501526060015160806101208501526113a6610140850182611340565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561151b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526115068583516113ef565b945060209384019391909101906001016114cc565b50929695505050505050565b5f60208284031215611537575f80fd5b5035919050565b602081525f6112cb60208301846113ef565b602081525f6112cb6020830184611340565b61156d8282516113db565b6020810151602083015263ffffffff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff6060820151166060830152608081015160808301525050565b60a081016102c58284611562565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611613576116136115c3565b60405290565b6040516080810167ffffffffffffffff81118282101715611613576116136115c3565b60405160c0810167ffffffffffffffff81118282101715611613576116136115c3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156116a6576116a66115c3565b604052919050565b8035600281106116bc575f80fd5b919050565b803563ffffffff811681146116bc575f80fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146116bc575f80fd5b5f60a08284031215611707575f80fd5b61170f6115f0565b905061171a826116ae565b815260208281013590820152611732604083016116c1565b6040820152611743606083016116d4565b606082015260809182013591810191909152919050565b5f6080828403121561176a575f80fd5b611772611619565b9050813560088110611782575f80fd5b8152602082013560068110611795575f80fd5b60208201526117a6604083016116c1565b6040820152606082013567ffffffffffffffff8111156117c4575f80fd5b8201601f810184136117d4575f80fd5b803567ffffffffffffffff8111156117ee576117ee6115c3565b61181f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161165f565b818152856020838501011115611833575f80fd5b816020840160208301375f6020838301015280606085015250505092915050565b5f60c08284031215611864575f80fd5b61186c61163c565b82358152905061187e602083016116ae565b6020820152604082013560ff81168114611896575f80fd5b60408201526118a7606083016116d4565b60608201526080828101359082015260a082013567ffffffffffffffff8111156118cf575f80fd5b6118db8482850161175a565b60a08301525092915050565b5f602082840312156118f7575f80fd5b813567ffffffffffffffff81111561190d575f80fd5b8201610120818503121561191f575f80fd5b6119276115f0565b61193185836116f7565b815260a082013567ffffffffffffffff81111561194c575f80fd5b61195886828501611854565b60208301525060c082013567ffffffffffffffff811115611977575f80fd5b61198386828501611854565b60408301525060e082013567ffffffffffffffff8111156119a2575f80fd5b6119ae86828501611854565b60608301525061010082013567ffffffffffffffff8111156119ce575f80fd5b6119da86828501611854565b608083015250949350505050565b600181811c908216806119fc57607f821691505b602082108103611a33577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b601f82111561039b57805f5260205f20601f840160051c81016020851015611a8b5750805b601f840160051c820191505b81811015611aaa575f8155600101611a97565b5050505050565b815167ffffffffffffffff811115611acb57611acb6115c3565b611adf81611ad984546119e8565b84611a66565b6020601f821160018114611b30575f8315611afa5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611aaa565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611b7d5787850151825560209485019460019092019101611b5d565b5084821015611bb957868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b611bd28187611562565b61012060a08201525f611be96101208301876113ef565b82810360c0840152611bfb81876113ef565b905082810360e0840152611c0f81866113ef565b9050828103610100840152611c2481856113ef565b9897505050505050505056fea2646970667358221220ec29c85e9420d542351535cfbb2c79285bfb5d86014ee966669d793fa2a4481264736f6c634300081a0033",Vf={},Uf={},_0={_format:Hf,contractName:Ff,sourceName:kf,abi:Sf,bytecode:Df,deployedBytecode:Gf,linkReferences:Vf,deployedLinkReferences:Uf},qf="hh-sol-artifact-1",jf="OffchainAccessList",Zf="contracts/allowlists/OffchainAccessList.sol",Wf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[{internalType:"string",name:"id",type:"string"}],name:"AccessListIdNotFound",type:"error"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"id_",type:"string"}],name:"addAllowListId",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"id_",type:"string"}],name:"addDenyListId",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"allowlistIds",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"denylistIds",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"getAllowListIds",outputs:[{internalType:"string[]",name:"",type:"string[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"getDenyListIds",outputs:[{internalType:"string[]",name:"",type:"string[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"id_",type:"string"}],name:"hasAllowListId",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"id_",type:"string"}],name:"hasDenyListId",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isAllowed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"id_",type:"string"}],name:"removeAllowListId",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"id_",type:"string"}],name:"removeDenyListId",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string[]",name:"ids_",type:"string[]"}],name:"setAllowListIds",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string[]",name:"ids_",type:"string[]"}],name:"setDenyListIds",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:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Kf="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612127806100895f395ff3fe608060405260043610610229575f3560e01c8063859aa08911610131578063e89079fa116100ac578063f04e283e1161007c578063fdee627a11610062578063fdee627a14610620578063fe9fbb8014610634578063fee81cf414610653575f80fd5b8063f04e283e146105fa578063f2fde38b1461060d575f80fd5b8063e89079fa14610587578063ec87621c146105a6578063ef05bda9146105ba578063ef4550bf146105d9575f80fd5b8063be4994f811610101578063dcc21361116100e7578063dcc2136114610526578063e3f756de14610545578063e611205f14610568575f80fd5b8063be4994f8146104e8578063cbb7de5114610507575f80fd5b8063859aa089146104535780638da5cb5b14610472578063937d599c146104aa57806399927eec146104c9575f80fd5b80632de94807116101c1578063514e62fc11610191578063715018a611610177578063715018a61461041857806375b238fc146104205780637e973e8214610434575f80fd5b8063514e62fc146103db57806354d1f13d14610410575f80fd5b80632de948071461034b5780634359d28a1461038a578063439fab91146103a95780634a4ee7b1146103c8575f80fd5b80631cd64df4116101fc5780631cd64df4146102b557806325692962146102ea57806328d6183b146102f25780632c297c181461032c575f80fd5b806301ffc9a71461022d578063096f199f14610261578063183a4f6e1461028d5780631c10893f146102a2575b5f80fd5b348015610238575f80fd5b5061024c610247366004611725565b610684565b60405190151581526020015b60405180910390f35b34801561026c575f80fd5b5061028061027b36600461176b565b6106df565b60405161025891906117b0565b6102a061029b36600461176b565b610785565b005b6102a06102b03660046117e3565b610792565b3480156102c0575f80fd5b5061024c6102cf3660046117e3565b638b78c6d8600c9081525f9290925260209091205481161490565b6102a06107a8565b3480156102fd575f80fd5b506040517f2a6b3c38000000000000000000000000000000000000000000000000000000008152602001610258565b348015610337575f80fd5b506102a0610346366004611852565b6107f5565b348015610356575f80fd5b5061037c610365366004611891565b638b78c6d8600c9081525f91909152602090205490565b604051908152602001610258565b348015610395575f80fd5b506102a06103a43660046118ed565b6108ea565b3480156103b4575f80fd5b506102a06103c3366004611852565b6109e4565b6102a06103d63660046117e3565b610ab7565b3480156103e6575f80fd5b5061024c6103f53660046117e3565b638b78c6d8600c9081525f9290925260209091205416151590565b6102a0610ac9565b6102a0610b02565b34801561042b575f80fd5b5061037c600281565b34801561043f575f80fd5b506102a061044e366004611852565b610b15565b34801561045e575f80fd5b506102a061046d366004611959565b610bfe565b34801561047d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610258565b3480156104b5575f80fd5b5061024c6104c4366004611852565b610ca0565b3480156104d4575f80fd5b5061024c6104e3366004611852565b610d15565b3480156104f3575f80fd5b506102a06105023660046118ed565b610d7f565b348015610512575f80fd5b506102a0610521366004611959565b610e1d565b348015610531575f80fd5b506102a06105403660046118ed565b610ebd565b348015610550575f80fd5b5061024c61055f36600461198c565b60019392505050565b348015610573575f80fd5b5061028061058236600461176b565b610f5b565b348015610592575f80fd5b506102a06105a1366004611852565b610f69565b3480156105b1575f80fd5b5061037c600181565b3480156105c5575f80fd5b506102a06105d4366004611852565b6110bc565b3480156105e4575f80fd5b506105ed6111bc565b60405161025891906119dd565b6102a0610608366004611891565b611290565b6102a061061b366004611891565b6112ca565b34801561062b575f80fd5b506105ed6112f0565b34801561063f575f80fd5b5061024c61064e366004611891565b6113ba565b34801561065e575f80fd5b5061037c61066d366004611891565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f2a6b3c380000000000000000000000000000000000000000000000000000000014806106d957506106d982611419565b92915050565b600181815481106106ee575f80fd5b905f5260205f20015f91509050805461070690611a5e565b80601f016020809104026020016040519081016040528092919081815260200182805461073290611a5e565b801561077d5780601f106107545761010080835404028352916020019161077d565b820191905f5260205f20905b81548152906001019060200180831161076057829003601f168201915b505050505081565b61078f338261146e565b50565b61079a611479565b6107a48282611493565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6107fe336113ba565b610834576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61083e8282610ca0565b156108aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f44656e796c69737420494420616c72656164792065786973747300000000000060448201526064015b60405180910390fd5b6001805480820182555f919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6016108e5828483611b27565b505050565b60026108f58161149f565b83821461092e576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109dc575f84848381811061094b5761094b611be1565b90506020020160208101906109609190611c0e565b90508015156001036109a25761099d87878481811061098157610981611be1565b90506020020160208101906109969190611891565b6001611493565b6109d3565b6109d38787848181106109b7576109b7611be1565b90506020020160208101906109cc9190611891565b600161146e565b50600101610930565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610a355760018160011c14303b10610a2c5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8080610a4585870187611d5e565b925092509250610a54836114d0565b8151610a66905f90602085019061164f565b508051610a7a90600190602084019061164f565b5050505080156108e5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a1505050565b610abf611479565b6107a4828261146e565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610b0a611479565b610b135f611518565b565b610b1e336113ba565b610b54576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b5e8282610d15565b15610bc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f416c6c6f776c69737420494420616c726561647920657869737473000000000060448201526064016108a1565b5f80546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563016108e5828483611b27565b610c07336113ba565b610c3d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c4860015f6116a3565b5f5b818110156108e5576001838383818110610c6657610c66611be1565b9050602002810190610c789190611dd4565b82546001810184555f938452602090932090920191610c979183611b27565b50600101610c4a565b5f805b600154811015610d0c578383604051610cbd929190611e35565b604051809103902060018281548110610cd857610cd8611be1565b905f5260205f2001604051610ced9190611e44565b604051809103902003610d045760019150506106d9565b600101610ca3565b505f9392505050565b5f805b5f54811015610d0c578383604051610d31929190611e35565b60405180910390205f8281548110610d4b57610d4b611be1565b905f5260205f2001604051610d609190611e44565b604051809103902003610d775760019150506106d9565b600101610d18565b6002610d8a8161149f565b838214610dc3576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109dc57610e15868683818110610de257610de2611be1565b9050602002016020810190610df79190611891565b858584818110610e0957610e09611be1565b90506020020135611493565b600101610dc5565b610e26336113ba565b610e5c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e665f806116a3565b5f5b818110156108e5575f838383818110610e8357610e83611be1565b9050602002810190610e959190611dd4565b82546001810184555f938452602090932090920191610eb49183611b27565b50600101610e68565b6002610ec88161149f565b838214610f01576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109dc57610f53868683818110610f2057610f20611be1565b9050602002016020810190610f359190611891565b858584818110610f4757610f47611be1565b9050602002013561146e565b600101610f03565b5f81815481106106ee575f80fd5b610f72336113ba565b610fa8576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b5f54811015611085578282604051610fc3929190611e35565b60405180910390205f8281548110610fdd57610fdd611be1565b905f5260205f2001604051610ff29190611e44565b60405180910390200361107d575f805461100e90600190611ed3565b8154811061101e5761101e611be1565b905f5260205f20015f828154811061103857611038611be1565b905f5260205f2001908161104c9190611f0b565b505f80548061105d5761105d611fe3565b600190038181905f5260205f20015f61107691906116be565b9055505050565b600101610faa565b5081816040517f8cf9845e0000000000000000000000000000000000000000000000000000000081526004016108a1929190612010565b6110c5336113ba565b6110fb576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b600154811015611085578282604051611117929190611e35565b60405180910390206001828154811061113257611132611be1565b905f5260205f20016040516111479190611e44565b6040518091039020036111b45760018054611163908290611ed3565b8154811061117357611173611be1565b905f5260205f20016001828154811061118e5761118e611be1565b905f5260205f200190816111a29190611f0b565b50600180548061105d5761105d611fe3565b6001016110fd565b60606001805480602002602001604051908101604052809291908181526020015f905b82821015611287578382905f5260205f200180546111fc90611a5e565b80601f016020809104026020016040519081016040528092919081815260200182805461122890611a5e565b80156112735780601f1061124a57610100808354040283529160200191611273565b820191905f5260205f20905b81548152906001019060200180831161125657829003601f168201915b5050505050815260200190600101906111df565b50505050905090565b611298611479565b63389a75e1600c52805f526020600c2080544211156112be57636f5e88185f526004601cfd5b5f905561078f81611518565b6112d2611479565b8060601b6112e757637448fbae5f526004601cfd5b61078f81611518565b60605f805480602002602001604051908101604052809291908181526020015f905b82821015611287578382905f5260205f2001805461132f90611a5e565b80601f016020809104026020016040519081016040528092919081815260200182805461135b90611a5e565b80156113a65780601f1061137d576101008083540402835291602001916113a6565b820191905f5260205f20905b81548152906001019060200180831161138957829003601f168201915b505050505081526020019060010190611312565b5f8173ffffffffffffffffffffffffffffffffffffffff166113df638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106d95750638b78c6d8600c9081525f839052602090205460031615156106d9565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806106d957506106d982611562565b6107a482825f6115f8565b638b78c6d819543314610b13576382b429005f526004601cfd5b6107a4828260016115f8565b638b78c6d81954331461078f57638b78c6d8600c52335f52806020600c20541661078f576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106d957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106d9565b638b78c6d8600c52825f526020600c20805483811783611619575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b828054828255905f5260205f20908101928215611693579160200282015b828111156116935782518290611683908261203e565b509160200191906001019061166d565b5061169f9291506116f5565b5090565b5080545f8255905f5260205f209081019061078f91906116f5565b5080546116ca90611a5e565b5f825580601f106116d9575050565b601f0160209004905f5260205f209081019061078f9190611711565b8082111561169f575f61170882826116be565b506001016116f5565b5b8082111561169f575f8155600101611712565b5f60208284031215611735575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611764575f80fd5b9392505050565b5f6020828403121561177b575f80fd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6117646020830184611782565b73ffffffffffffffffffffffffffffffffffffffff8116811461078f575f80fd5b5f80604083850312156117f4575f80fd5b82356117ff816117c2565b946020939093013593505050565b5f8083601f84011261181d575f80fd5b50813567ffffffffffffffff811115611834575f80fd5b60208301915083602082850101111561184b575f80fd5b9250929050565b5f8060208385031215611863575f80fd5b823567ffffffffffffffff811115611879575f80fd5b6118858582860161180d565b90969095509350505050565b5f602082840312156118a1575f80fd5b8135611764816117c2565b5f8083601f8401126118bc575f80fd5b50813567ffffffffffffffff8111156118d3575f80fd5b6020830191508360208260051b850101111561184b575f80fd5b5f805f8060408587031215611900575f80fd5b843567ffffffffffffffff811115611916575f80fd5b611922878288016118ac565b909550935050602085013567ffffffffffffffff811115611941575f80fd5b61194d878288016118ac565b95989497509550505050565b5f806020838503121561196a575f80fd5b823567ffffffffffffffff811115611980575f80fd5b611885858286016118ac565b5f805f6040848603121561199e575f80fd5b83356119a9816117c2565b9250602084013567ffffffffffffffff8111156119c4575f80fd5b6119d08682870161180d565b9497909650939450505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015611a52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452611a3d858351611782565b94506020938401939190910190600101611a03565b50929695505050505050565b600181811c90821680611a7257607f821691505b602082108103611aa9577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b601f8211156108e557805f5260205f20601f840160051c81016020851015611b015750805b601f840160051c820191505b81811015611b20575f8155600101611b0d565b5050505050565b67ffffffffffffffff831115611b3f57611b3f611aaf565b611b5383611b4d8354611a5e565b83611adc565b5f601f841160018114611b84575f8515611b6d5750838201355b5f19600387901b1c1916600186901b178355611b20565b5f83815260208120601f198716915b82811015611bb35786850135825560209485019460019092019101611b93565b5086821015611bcf575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611c1e575f80fd5b81358015158114611764575f80fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611c5657611c56611aaf565b604052919050565b5f82601f830112611c6d575f80fd5b813567ffffffffffffffff811115611c8757611c87611aaf565b8060051b611c9760208201611c2d565b91825260208185018101929081019086841115611cb2575f80fd5b6020860192505b83831015611d5457823567ffffffffffffffff811115611cd7575f80fd5b8601603f81018813611ce7575f80fd5b602081013567ffffffffffffffff811115611d0457611d04611aaf565b611d176020601f19601f84011601611c2d565b8181526040838301018a1015611d2b575f80fd5b816040840160208301375f60208383010152808552505050602082019150602083019250611cb9565b9695505050505050565b5f805f60608486031215611d70575f80fd5b8335611d7b816117c2565b9250602084013567ffffffffffffffff811115611d96575f80fd5b611da286828701611c5e565b925050604084013567ffffffffffffffff811115611dbe575f80fd5b611dca86828701611c5e565b9150509250925092565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611e07575f80fd5b83018035915067ffffffffffffffff821115611e21575f80fd5b60200191503681900382131561184b575f80fd5b818382375f9101908152919050565b5f808354611e5181611a5e565b600182168015611e685760018114611e9b57611ec8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083168652811515820286019350611ec8565b865f5260205f205f5b83811015611ec057815488820152600190910190602001611ea4565b505081860193505b509195945050505050565b818103818111156106d9577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103611f16575050565b611f208254611a5e565b67ffffffffffffffff811115611f3857611f38611aaf565b611f4c81611f468454611a5e565b84611adc565b5f601f821160018114611f80575f8315611f665750848201545b600184901b5f19600386901b1c198216175b855550611b20565b5f8581526020808220868352908220601f198616925b83811015611fb65782860154825560019586019590910190602001611f96565b5085831015611fd357818501545f19600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b815167ffffffffffffffff81111561205857612058611aaf565b61206681611f468454611a5e565b6020601f821160018114612096575f8315611f66575081850151600184901b5f19600386901b1c19821617611f78565b5f84815260208120601f198516915b828110156120c557878501518255602094850194600190920191016120a5565b50848210156120e257868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea2646970667358221220d48533f46ace671d98fdf56917341f0f952e8e90be14ad403bdcaa880953d80864736f6c634300081a0033",Yf="0x608060405260043610610229575f3560e01c8063859aa08911610131578063e89079fa116100ac578063f04e283e1161007c578063fdee627a11610062578063fdee627a14610620578063fe9fbb8014610634578063fee81cf414610653575f80fd5b8063f04e283e146105fa578063f2fde38b1461060d575f80fd5b8063e89079fa14610587578063ec87621c146105a6578063ef05bda9146105ba578063ef4550bf146105d9575f80fd5b8063be4994f811610101578063dcc21361116100e7578063dcc2136114610526578063e3f756de14610545578063e611205f14610568575f80fd5b8063be4994f8146104e8578063cbb7de5114610507575f80fd5b8063859aa089146104535780638da5cb5b14610472578063937d599c146104aa57806399927eec146104c9575f80fd5b80632de94807116101c1578063514e62fc11610191578063715018a611610177578063715018a61461041857806375b238fc146104205780637e973e8214610434575f80fd5b8063514e62fc146103db57806354d1f13d14610410575f80fd5b80632de948071461034b5780634359d28a1461038a578063439fab91146103a95780634a4ee7b1146103c8575f80fd5b80631cd64df4116101fc5780631cd64df4146102b557806325692962146102ea57806328d6183b146102f25780632c297c181461032c575f80fd5b806301ffc9a71461022d578063096f199f14610261578063183a4f6e1461028d5780631c10893f146102a2575b5f80fd5b348015610238575f80fd5b5061024c610247366004611725565b610684565b60405190151581526020015b60405180910390f35b34801561026c575f80fd5b5061028061027b36600461176b565b6106df565b60405161025891906117b0565b6102a061029b36600461176b565b610785565b005b6102a06102b03660046117e3565b610792565b3480156102c0575f80fd5b5061024c6102cf3660046117e3565b638b78c6d8600c9081525f9290925260209091205481161490565b6102a06107a8565b3480156102fd575f80fd5b506040517f2a6b3c38000000000000000000000000000000000000000000000000000000008152602001610258565b348015610337575f80fd5b506102a0610346366004611852565b6107f5565b348015610356575f80fd5b5061037c610365366004611891565b638b78c6d8600c9081525f91909152602090205490565b604051908152602001610258565b348015610395575f80fd5b506102a06103a43660046118ed565b6108ea565b3480156103b4575f80fd5b506102a06103c3366004611852565b6109e4565b6102a06103d63660046117e3565b610ab7565b3480156103e6575f80fd5b5061024c6103f53660046117e3565b638b78c6d8600c9081525f9290925260209091205416151590565b6102a0610ac9565b6102a0610b02565b34801561042b575f80fd5b5061037c600281565b34801561043f575f80fd5b506102a061044e366004611852565b610b15565b34801561045e575f80fd5b506102a061046d366004611959565b610bfe565b34801561047d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610258565b3480156104b5575f80fd5b5061024c6104c4366004611852565b610ca0565b3480156104d4575f80fd5b5061024c6104e3366004611852565b610d15565b3480156104f3575f80fd5b506102a06105023660046118ed565b610d7f565b348015610512575f80fd5b506102a0610521366004611959565b610e1d565b348015610531575f80fd5b506102a06105403660046118ed565b610ebd565b348015610550575f80fd5b5061024c61055f36600461198c565b60019392505050565b348015610573575f80fd5b5061028061058236600461176b565b610f5b565b348015610592575f80fd5b506102a06105a1366004611852565b610f69565b3480156105b1575f80fd5b5061037c600181565b3480156105c5575f80fd5b506102a06105d4366004611852565b6110bc565b3480156105e4575f80fd5b506105ed6111bc565b60405161025891906119dd565b6102a0610608366004611891565b611290565b6102a061061b366004611891565b6112ca565b34801561062b575f80fd5b506105ed6112f0565b34801561063f575f80fd5b5061024c61064e366004611891565b6113ba565b34801561065e575f80fd5b5061037c61066d366004611891565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f2a6b3c380000000000000000000000000000000000000000000000000000000014806106d957506106d982611419565b92915050565b600181815481106106ee575f80fd5b905f5260205f20015f91509050805461070690611a5e565b80601f016020809104026020016040519081016040528092919081815260200182805461073290611a5e565b801561077d5780601f106107545761010080835404028352916020019161077d565b820191905f5260205f20905b81548152906001019060200180831161076057829003601f168201915b505050505081565b61078f338261146e565b50565b61079a611479565b6107a48282611493565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6107fe336113ba565b610834576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61083e8282610ca0565b156108aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f44656e796c69737420494420616c72656164792065786973747300000000000060448201526064015b60405180910390fd5b6001805480820182555f919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6016108e5828483611b27565b505050565b60026108f58161149f565b83821461092e576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109dc575f84848381811061094b5761094b611be1565b90506020020160208101906109609190611c0e565b90508015156001036109a25761099d87878481811061098157610981611be1565b90506020020160208101906109969190611891565b6001611493565b6109d3565b6109d38787848181106109b7576109b7611be1565b90506020020160208101906109cc9190611891565b600161146e565b50600101610930565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610a355760018160011c14303b10610a2c5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8080610a4585870187611d5e565b925092509250610a54836114d0565b8151610a66905f90602085019061164f565b508051610a7a90600190602084019061164f565b5050505080156108e5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a1505050565b610abf611479565b6107a4828261146e565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610b0a611479565b610b135f611518565b565b610b1e336113ba565b610b54576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b5e8282610d15565b15610bc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f416c6c6f776c69737420494420616c726561647920657869737473000000000060448201526064016108a1565b5f80546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563016108e5828483611b27565b610c07336113ba565b610c3d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c4860015f6116a3565b5f5b818110156108e5576001838383818110610c6657610c66611be1565b9050602002810190610c789190611dd4565b82546001810184555f938452602090932090920191610c979183611b27565b50600101610c4a565b5f805b600154811015610d0c578383604051610cbd929190611e35565b604051809103902060018281548110610cd857610cd8611be1565b905f5260205f2001604051610ced9190611e44565b604051809103902003610d045760019150506106d9565b600101610ca3565b505f9392505050565b5f805b5f54811015610d0c578383604051610d31929190611e35565b60405180910390205f8281548110610d4b57610d4b611be1565b905f5260205f2001604051610d609190611e44565b604051809103902003610d775760019150506106d9565b600101610d18565b6002610d8a8161149f565b838214610dc3576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109dc57610e15868683818110610de257610de2611be1565b9050602002016020810190610df79190611891565b858584818110610e0957610e09611be1565b90506020020135611493565b600101610dc5565b610e26336113ba565b610e5c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e665f806116a3565b5f5b818110156108e5575f838383818110610e8357610e83611be1565b9050602002810190610e959190611dd4565b82546001810184555f938452602090932090920191610eb49183611b27565b50600101610e68565b6002610ec88161149f565b838214610f01576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109dc57610f53868683818110610f2057610f20611be1565b9050602002016020810190610f359190611891565b858584818110610f4757610f47611be1565b9050602002013561146e565b600101610f03565b5f81815481106106ee575f80fd5b610f72336113ba565b610fa8576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b5f54811015611085578282604051610fc3929190611e35565b60405180910390205f8281548110610fdd57610fdd611be1565b905f5260205f2001604051610ff29190611e44565b60405180910390200361107d575f805461100e90600190611ed3565b8154811061101e5761101e611be1565b905f5260205f20015f828154811061103857611038611be1565b905f5260205f2001908161104c9190611f0b565b505f80548061105d5761105d611fe3565b600190038181905f5260205f20015f61107691906116be565b9055505050565b600101610faa565b5081816040517f8cf9845e0000000000000000000000000000000000000000000000000000000081526004016108a1929190612010565b6110c5336113ba565b6110fb576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b600154811015611085578282604051611117929190611e35565b60405180910390206001828154811061113257611132611be1565b905f5260205f20016040516111479190611e44565b6040518091039020036111b45760018054611163908290611ed3565b8154811061117357611173611be1565b905f5260205f20016001828154811061118e5761118e611be1565b905f5260205f200190816111a29190611f0b565b50600180548061105d5761105d611fe3565b6001016110fd565b60606001805480602002602001604051908101604052809291908181526020015f905b82821015611287578382905f5260205f200180546111fc90611a5e565b80601f016020809104026020016040519081016040528092919081815260200182805461122890611a5e565b80156112735780601f1061124a57610100808354040283529160200191611273565b820191905f5260205f20905b81548152906001019060200180831161125657829003601f168201915b5050505050815260200190600101906111df565b50505050905090565b611298611479565b63389a75e1600c52805f526020600c2080544211156112be57636f5e88185f526004601cfd5b5f905561078f81611518565b6112d2611479565b8060601b6112e757637448fbae5f526004601cfd5b61078f81611518565b60605f805480602002602001604051908101604052809291908181526020015f905b82821015611287578382905f5260205f2001805461132f90611a5e565b80601f016020809104026020016040519081016040528092919081815260200182805461135b90611a5e565b80156113a65780601f1061137d576101008083540402835291602001916113a6565b820191905f5260205f20905b81548152906001019060200180831161138957829003601f168201915b505050505081526020019060010190611312565b5f8173ffffffffffffffffffffffffffffffffffffffff166113df638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106d95750638b78c6d8600c9081525f839052602090205460031615156106d9565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806106d957506106d982611562565b6107a482825f6115f8565b638b78c6d819543314610b13576382b429005f526004601cfd5b6107a4828260016115f8565b638b78c6d81954331461078f57638b78c6d8600c52335f52806020600c20541661078f576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106d957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106d9565b638b78c6d8600c52825f526020600c20805483811783611619575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b828054828255905f5260205f20908101928215611693579160200282015b828111156116935782518290611683908261203e565b509160200191906001019061166d565b5061169f9291506116f5565b5090565b5080545f8255905f5260205f209081019061078f91906116f5565b5080546116ca90611a5e565b5f825580601f106116d9575050565b601f0160209004905f5260205f209081019061078f9190611711565b8082111561169f575f61170882826116be565b506001016116f5565b5b8082111561169f575f8155600101611712565b5f60208284031215611735575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611764575f80fd5b9392505050565b5f6020828403121561177b575f80fd5b5035919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6117646020830184611782565b73ffffffffffffffffffffffffffffffffffffffff8116811461078f575f80fd5b5f80604083850312156117f4575f80fd5b82356117ff816117c2565b946020939093013593505050565b5f8083601f84011261181d575f80fd5b50813567ffffffffffffffff811115611834575f80fd5b60208301915083602082850101111561184b575f80fd5b9250929050565b5f8060208385031215611863575f80fd5b823567ffffffffffffffff811115611879575f80fd5b6118858582860161180d565b90969095509350505050565b5f602082840312156118a1575f80fd5b8135611764816117c2565b5f8083601f8401126118bc575f80fd5b50813567ffffffffffffffff8111156118d3575f80fd5b6020830191508360208260051b850101111561184b575f80fd5b5f805f8060408587031215611900575f80fd5b843567ffffffffffffffff811115611916575f80fd5b611922878288016118ac565b909550935050602085013567ffffffffffffffff811115611941575f80fd5b61194d878288016118ac565b95989497509550505050565b5f806020838503121561196a575f80fd5b823567ffffffffffffffff811115611980575f80fd5b611885858286016118ac565b5f805f6040848603121561199e575f80fd5b83356119a9816117c2565b9250602084013567ffffffffffffffff8111156119c4575f80fd5b6119d08682870161180d565b9497909650939450505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015611a52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452611a3d858351611782565b94506020938401939190910190600101611a03565b50929695505050505050565b600181811c90821680611a7257607f821691505b602082108103611aa9577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b601f8211156108e557805f5260205f20601f840160051c81016020851015611b015750805b601f840160051c820191505b81811015611b20575f8155600101611b0d565b5050505050565b67ffffffffffffffff831115611b3f57611b3f611aaf565b611b5383611b4d8354611a5e565b83611adc565b5f601f841160018114611b84575f8515611b6d5750838201355b5f19600387901b1c1916600186901b178355611b20565b5f83815260208120601f198716915b82811015611bb35786850135825560209485019460019092019101611b93565b5086821015611bcf575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611c1e575f80fd5b81358015158114611764575f80fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611c5657611c56611aaf565b604052919050565b5f82601f830112611c6d575f80fd5b813567ffffffffffffffff811115611c8757611c87611aaf565b8060051b611c9760208201611c2d565b91825260208185018101929081019086841115611cb2575f80fd5b6020860192505b83831015611d5457823567ffffffffffffffff811115611cd7575f80fd5b8601603f81018813611ce7575f80fd5b602081013567ffffffffffffffff811115611d0457611d04611aaf565b611d176020601f19601f84011601611c2d565b8181526040838301018a1015611d2b575f80fd5b816040840160208301375f60208383010152808552505050602082019150602083019250611cb9565b9695505050505050565b5f805f60608486031215611d70575f80fd5b8335611d7b816117c2565b9250602084013567ffffffffffffffff811115611d96575f80fd5b611da286828701611c5e565b925050604084013567ffffffffffffffff811115611dbe575f80fd5b611dca86828701611c5e565b9150509250925092565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611e07575f80fd5b83018035915067ffffffffffffffff821115611e21575f80fd5b60200191503681900382131561184b575f80fd5b818382375f9101908152919050565b5f808354611e5181611a5e565b600182168015611e685760018114611e9b57611ec8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083168652811515820286019350611ec8565b865f5260205f205f5b83811015611ec057815488820152600190910190602001611ea4565b505081860193505b509195945050505050565b818103818111156106d9577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103611f16575050565b611f208254611a5e565b67ffffffffffffffff811115611f3857611f38611aaf565b611f4c81611f468454611a5e565b84611adc565b5f601f821160018114611f80575f8315611f665750848201545b600184901b5f19600386901b1c198216175b855550611b20565b5f8581526020808220868352908220601f198616925b83811015611fb65782860154825560019586019590910190602001611f96565b5085831015611fd357818501545f19600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b815167ffffffffffffffff81111561205857612058611aaf565b61206681611f468454611a5e565b6020601f821160018114612096575f8315611f66575081850151600184901b5f19600386901b1c19821617611f78565b5f84815260208120601f198516915b828110156120c557878501518255602094850194600190920191016120a5565b50848210156120e257868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea2646970667358221220d48533f46ace671d98fdf56917341f0f952e8e90be14ad403bdcaa880953d80864736f6c634300081a0033",Qf={},Jf={},z0={_format:qf,contractName:jf,sourceName:Zf,abi:Wf,bytecode:Kf,deployedBytecode:Yf,linkReferences:Qf,deployedLinkReferences:Jf},Xf="hh-sol-artifact-1",f1="SimpleAllowList",e1="contracts/allowlists/SimpleAllowList.sol",b1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user_",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isAllowed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"users_",type:"address[]"},{internalType:"bool[]",name:"allowed_",type:"bool[]"}],name:"setAllowed",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",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:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],a1="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611160806100895f395ff3fe608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610445578063fe9fbb8014610458578063fee81cf414610477575f80fd5b8063e3f756de146103d8578063ec87621c1461041e578063f04e283e14610432575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b80632de9480711610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b80632de948071461025a5780633abb0604146102995780634359d28a146102b8575f80fd5b80631cd64df4116101615780631cd64df4146101e3578063256929621461021857806328d6183b14610220575f80fd5b806301ffc9a714610187578063183a4f6e146101bb5780631c10893f146101d0575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5e565b6104a8565b60405190151581526020015b60405180910390f35b6101ce6101c9366004610da4565b610503565b005b6101ce6101de366004610dec565b610510565b3480156101ee575f80fd5b506101a66101fd366004610dec565b638b78c6d8600c9081525f9290925260209091205481161490565b6101ce610526565b34801561022b575f80fd5b506040517f1392d7980000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610265575f80fd5b5061028b610274366004610e16565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102a4575f80fd5b506101ce6102b3366004610e79565b610573565b3480156102c3575f80fd5b506101ce6102d2366004610e79565b6106a6565b3480156102e2575f80fd5b506101ce6102f1366004610f23565b6107a0565b6101ce610304366004610dec565b6108cf565b348015610314575f80fd5b506101a6610323366004610dec565b638b78c6d8600c9081525f9290925260209091205416151590565b6101ce6108e1565b6101ce61091a565b348015610359575f80fd5b5061028b600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101ce6103b4366004610e79565b61092d565b3480156103c4575f80fd5b506101ce6103d3366004610e79565b6109cb565b3480156103e3575f80fd5b506101a66103f2366004610f62565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1690565b348015610429575f80fd5b5061028b600181565b6101ce610440366004610e16565b610a69565b6101ce610453366004610e16565b610aa3565b348015610463575f80fd5b506101a6610472366004610e16565b610ac9565b348015610482575f80fd5b5061028b610491366004610e16565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f1392d7980000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610b28565b92915050565b61050d3382610b7d565b50565b610518610b88565b6105228282610ba2565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b61057c33610ac9565b6105b2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8281146105eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8381101561069f5782828281811061060757610607610fb3565b905060200201602081019061061c9190610fe0565b5f8087878581811061063057610630610fb3565b90506020020160208101906106459190610e16565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016105ed565b5050505050565b60026106b181610bae565b8382146106ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798575f84848381811061070757610707610fb3565b905060200201602081019061071c9190610fe0565b905080151560010361075e5761075987878481811061073d5761073d610fb3565b90506020020160208101906107529190610e16565b6001610ba2565b61078f565b61078f87878481811061077357610773610fb3565b90506020020160208101906107889190610e16565b6001610b7d565b506001016106ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f15760018160011c14303b106107e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108008486018661102c565b9150915061080d82610bdf565b5f5b81518110156108925760015f8084848151811061082e5761082e610fb3565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161080f565b50505080156108ca576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d7610b88565b6105228282610b7d565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610922610b88565b61092b5f610c27565b565b600261093881610bae565b838214610971576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798576109c386868381811061099057610990610fb3565b90506020020160208101906109a59190610e16565b8585848181106109b7576109b7610fb3565b90506020020135610ba2565b600101610973565b60026109d681610bae565b838214610a0f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079857610a61868683818110610a2e57610a2e610fb3565b9050602002016020810190610a439190610e16565b858584818110610a5557610a55610fb3565b90506020020135610b7d565b600101610a11565b610a71610b88565b63389a75e1600c52805f526020600c208054421115610a9757636f5e88185f526004601cfd5b5f905561050d81610c27565b610aab610b88565b8060601b610ac057637448fbae5f526004601cfd5b61050d81610c27565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aee638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fd5750638b78c6d8600c9081525f839052602090205460031615156104fd565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610c71565b61052282825f610d07565b638b78c6d81954331461092b576382b429005f526004601cfd5b61052282826001610d07565b638b78c6d81954331461050d57638b78c6d8600c52335f52806020600c20541661050d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fd57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fd565b638b78c6d8600c52825f526020600c20805483811783610d28575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6e575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9d575f80fd5b9392505050565b5f60208284031215610db4575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461050d575f80fd5b8035610de781610dbb565b919050565b5f8060408385031215610dfd575f80fd5b8235610e0881610dbb565b946020939093013593505050565b5f60208284031215610e26575f80fd5b8135610d9d81610dbb565b5f8083601f840112610e41575f80fd5b50813567ffffffffffffffff811115610e58575f80fd5b6020830191508360208260051b8501011115610e72575f80fd5b9250929050565b5f805f8060408587031215610e8c575f80fd5b843567ffffffffffffffff811115610ea2575f80fd5b610eae87828801610e31565b909550935050602085013567ffffffffffffffff811115610ecd575f80fd5b610ed987828801610e31565b95989497509550505050565b5f8083601f840112610ef5575f80fd5b50813567ffffffffffffffff811115610f0c575f80fd5b602083019150836020828501011115610e72575f80fd5b5f8060208385031215610f34575f80fd5b823567ffffffffffffffff811115610f4a575f80fd5b610f5685828601610ee5565b90969095509350505050565b5f805f60408486031215610f74575f80fd5b8335610f7f81610dbb565b9250602084013567ffffffffffffffff811115610f9a575f80fd5b610fa686828701610ee5565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff0575f80fd5b81358015158114610d9d575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103d575f80fd5b823561104881610dbb565b9150602083013567ffffffffffffffff811115611063575f80fd5b8301601f81018513611073575f80fd5b803567ffffffffffffffff81111561108d5761108d610fff565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d8576110d8610fff565b6040529182526020818401810192908101888411156110f5575f80fd5b6020850194505b8385101561111b5761110d85610ddc565b8152602094850194016110fc565b5080945050505050925092905056fea264697066735822122027fffd03dd768053e102d2296f2de3fb08c582f4cc6013e14d57229182f9dbd364736f6c634300081a0033",t1="0x608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610445578063fe9fbb8014610458578063fee81cf414610477575f80fd5b8063e3f756de146103d8578063ec87621c1461041e578063f04e283e14610432575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b80632de9480711610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b80632de948071461025a5780633abb0604146102995780634359d28a146102b8575f80fd5b80631cd64df4116101615780631cd64df4146101e3578063256929621461021857806328d6183b14610220575f80fd5b806301ffc9a714610187578063183a4f6e146101bb5780631c10893f146101d0575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5e565b6104a8565b60405190151581526020015b60405180910390f35b6101ce6101c9366004610da4565b610503565b005b6101ce6101de366004610dec565b610510565b3480156101ee575f80fd5b506101a66101fd366004610dec565b638b78c6d8600c9081525f9290925260209091205481161490565b6101ce610526565b34801561022b575f80fd5b506040517f1392d7980000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610265575f80fd5b5061028b610274366004610e16565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102a4575f80fd5b506101ce6102b3366004610e79565b610573565b3480156102c3575f80fd5b506101ce6102d2366004610e79565b6106a6565b3480156102e2575f80fd5b506101ce6102f1366004610f23565b6107a0565b6101ce610304366004610dec565b6108cf565b348015610314575f80fd5b506101a6610323366004610dec565b638b78c6d8600c9081525f9290925260209091205416151590565b6101ce6108e1565b6101ce61091a565b348015610359575f80fd5b5061028b600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101ce6103b4366004610e79565b61092d565b3480156103c4575f80fd5b506101ce6103d3366004610e79565b6109cb565b3480156103e3575f80fd5b506101a66103f2366004610f62565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1690565b348015610429575f80fd5b5061028b600181565b6101ce610440366004610e16565b610a69565b6101ce610453366004610e16565b610aa3565b348015610463575f80fd5b506101a6610472366004610e16565b610ac9565b348015610482575f80fd5b5061028b610491366004610e16565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f1392d7980000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610b28565b92915050565b61050d3382610b7d565b50565b610518610b88565b6105228282610ba2565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b61057c33610ac9565b6105b2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8281146105eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8381101561069f5782828281811061060757610607610fb3565b905060200201602081019061061c9190610fe0565b5f8087878581811061063057610630610fb3565b90506020020160208101906106459190610e16565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016105ed565b5050505050565b60026106b181610bae565b8382146106ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798575f84848381811061070757610707610fb3565b905060200201602081019061071c9190610fe0565b905080151560010361075e5761075987878481811061073d5761073d610fb3565b90506020020160208101906107529190610e16565b6001610ba2565b61078f565b61078f87878481811061077357610773610fb3565b90506020020160208101906107889190610e16565b6001610b7d565b506001016106ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f15760018160011c14303b106107e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108008486018661102c565b9150915061080d82610bdf565b5f5b81518110156108925760015f8084848151811061082e5761082e610fb3565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161080f565b50505080156108ca576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d7610b88565b6105228282610b7d565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610922610b88565b61092b5f610c27565b565b600261093881610bae565b838214610971576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798576109c386868381811061099057610990610fb3565b90506020020160208101906109a59190610e16565b8585848181106109b7576109b7610fb3565b90506020020135610ba2565b600101610973565b60026109d681610bae565b838214610a0f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079857610a61868683818110610a2e57610a2e610fb3565b9050602002016020810190610a439190610e16565b858584818110610a5557610a55610fb3565b90506020020135610b7d565b600101610a11565b610a71610b88565b63389a75e1600c52805f526020600c208054421115610a9757636f5e88185f526004601cfd5b5f905561050d81610c27565b610aab610b88565b8060601b610ac057637448fbae5f526004601cfd5b61050d81610c27565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aee638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fd5750638b78c6d8600c9081525f839052602090205460031615156104fd565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610c71565b61052282825f610d07565b638b78c6d81954331461092b576382b429005f526004601cfd5b61052282826001610d07565b638b78c6d81954331461050d57638b78c6d8600c52335f52806020600c20541661050d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fd57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fd565b638b78c6d8600c52825f526020600c20805483811783610d28575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6e575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9d575f80fd5b9392505050565b5f60208284031215610db4575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461050d575f80fd5b8035610de781610dbb565b919050565b5f8060408385031215610dfd575f80fd5b8235610e0881610dbb565b946020939093013593505050565b5f60208284031215610e26575f80fd5b8135610d9d81610dbb565b5f8083601f840112610e41575f80fd5b50813567ffffffffffffffff811115610e58575f80fd5b6020830191508360208260051b8501011115610e72575f80fd5b9250929050565b5f805f8060408587031215610e8c575f80fd5b843567ffffffffffffffff811115610ea2575f80fd5b610eae87828801610e31565b909550935050602085013567ffffffffffffffff811115610ecd575f80fd5b610ed987828801610e31565b95989497509550505050565b5f8083601f840112610ef5575f80fd5b50813567ffffffffffffffff811115610f0c575f80fd5b602083019150836020828501011115610e72575f80fd5b5f8060208385031215610f34575f80fd5b823567ffffffffffffffff811115610f4a575f80fd5b610f5685828601610ee5565b90969095509350505050565b5f805f60408486031215610f74575f80fd5b8335610f7f81610dbb565b9250602084013567ffffffffffffffff811115610f9a575f80fd5b610fa686828701610ee5565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff0575f80fd5b81358015158114610d9d575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103d575f80fd5b823561104881610dbb565b9150602083013567ffffffffffffffff811115611063575f80fd5b8301601f81018513611073575f80fd5b803567ffffffffffffffff81111561108d5761108d610fff565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d8576110d8610fff565b6040529182526020818401810192908101888411156110f5575f80fd5b6020850194505b8385101561111b5761110d85610ddc565b8152602094850194016110fc565b5080945050505050925092905056fea264697066735822122027fffd03dd768053e102d2296f2de3fb08c582f4cc6013e14d57229182f9dbd364736f6c634300081a0033",d1={},n1={},B0={_format:Xf,contractName:f1,sourceName:e1,abi:b1,bytecode:a1,deployedBytecode:t1,linkReferences:d1,deployedLinkReferences:n1},c1="hh-sol-artifact-1",i1="SimpleDenyList",s1="contracts/allowlists/SimpleDenyList.sol",r1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user_",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isAllowed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"users_",type:"address[]"},{internalType:"bool[]",name:"denied_",type:"bool[]"}],name:"setDenied",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:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],p1="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611161806100895f395ff3fe608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610446578063fe9fbb8014610459578063fee81cf414610478575f80fd5b8063e3f756de146103d8578063ec87621c1461041f578063f04e283e14610433575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b806328d6183b11610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b806328d6183b1461023f5780632de94807146102795780634359d28a146102b8575f80fd5b80631c10893f116101615780631c10893f146101ef5780631cd64df4146102025780632569296214610237575f80fd5b806301ffc9a714610187578063141973b0146101bb578063183a4f6e146101dc575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5f565b6104a9565b60405190151581526020015b60405180910390f35b3480156101c6575f80fd5b506101da6101d5366004610ded565b610504565b005b6101da6101ea366004610e59565b610637565b6101da6101fd366004610ea1565b610644565b34801561020d575f80fd5b506101a661021c366004610ea1565b638b78c6d8600c9081525f9290925260209091205481161490565b6101da61065a565b34801561024a575f80fd5b506040517f3d30a22c0000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610284575f80fd5b506102aa610293366004610ecb565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102c3575f80fd5b506101da6102d2366004610ded565b6106a7565b3480156102e2575f80fd5b506101da6102f1366004610f24565b6107a1565b6101da610304366004610ea1565b6108d0565b348015610314575f80fd5b506101a6610323366004610ea1565b638b78c6d8600c9081525f9290925260209091205416151590565b6101da6108e2565b6101da61091b565b348015610359575f80fd5b506102aa600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101da6103b4366004610ded565b61092e565b3480156103c4575f80fd5b506101da6103d3366004610ded565b6109cc565b3480156103e3575f80fd5b506101a66103f2366004610f63565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff161590565b34801561042a575f80fd5b506102aa600181565b6101da610441366004610ecb565b610a6a565b6101da610454366004610ecb565b610aa4565b348015610464575f80fd5b506101a6610473366004610ecb565b610aca565b348015610483575f80fd5b506102aa610492366004610ecb565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f3d30a22c0000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610b29565b92915050565b61050d33610aca565b610543576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82811461057c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156106305782828281811061059857610598610fb4565b90506020020160208101906105ad9190610fe1565b5f808787858181106105c1576105c1610fb4565b90506020020160208101906105d69190610ecb565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161057e565b5050505050565b6106413382610b7e565b50565b61064c610b89565b6106568282610ba3565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026106b281610baf565b8382146106eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799575f84848381811061070857610708610fb4565b905060200201602081019061071d9190610fe1565b905080151560010361075f5761075a87878481811061073e5761073e610fb4565b90506020020160208101906107539190610ecb565b6001610ba3565b610790565b61079087878481811061077457610774610fb4565b90506020020160208101906107899190610ecb565b6001610b7e565b506001016106ed565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f25760018160011c14303b106107e95763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108018486018661102d565b9150915061080e82610be0565b5f5b81518110156108935760015f8084848151811061082f5761082f610fb4565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610810565b50505080156108cb576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d8610b89565b6106568282610b7e565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610923610b89565b61092c5f610c28565b565b600261093981610baf565b838214610972576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799576109c486868381811061099157610991610fb4565b90506020020160208101906109a69190610ecb565b8585848181106109b8576109b8610fb4565b90506020020135610ba3565b600101610974565b60026109d781610baf565b838214610a10576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079957610a62868683818110610a2f57610a2f610fb4565b9050602002016020810190610a449190610ecb565b858584818110610a5657610a56610fb4565b90506020020135610b7e565b600101610a12565b610a72610b89565b63389a75e1600c52805f526020600c208054421115610a9857636f5e88185f526004601cfd5b5f905561064181610c28565b610aac610b89565b8060601b610ac157637448fbae5f526004601cfd5b61064181610c28565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aef638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fe5750638b78c6d8600c9081525f839052602090205460031615156104fe565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610c72565b61065682825f610d08565b638b78c6d81954331461092c576382b429005f526004601cfd5b61065682826001610d08565b638b78c6d81954331461064157638b78c6d8600c52335f52806020600c205416610641576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fe57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fe565b638b78c6d8600c52825f526020600c20805483811783610d29575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6f575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9e575f80fd5b9392505050565b5f8083601f840112610db5575f80fd5b50813567ffffffffffffffff811115610dcc575f80fd5b6020830191508360208260051b8501011115610de6575f80fd5b9250929050565b5f805f8060408587031215610e00575f80fd5b843567ffffffffffffffff811115610e16575f80fd5b610e2287828801610da5565b909550935050602085013567ffffffffffffffff811115610e41575f80fd5b610e4d87828801610da5565b95989497509550505050565b5f60208284031215610e69575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610641575f80fd5b8035610e9c81610e70565b919050565b5f8060408385031215610eb2575f80fd5b8235610ebd81610e70565b946020939093013593505050565b5f60208284031215610edb575f80fd5b8135610d9e81610e70565b5f8083601f840112610ef6575f80fd5b50813567ffffffffffffffff811115610f0d575f80fd5b602083019150836020828501011115610de6575f80fd5b5f8060208385031215610f35575f80fd5b823567ffffffffffffffff811115610f4b575f80fd5b610f5785828601610ee6565b90969095509350505050565b5f805f60408486031215610f75575f80fd5b8335610f8081610e70565b9250602084013567ffffffffffffffff811115610f9b575f80fd5b610fa786828701610ee6565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff1575f80fd5b81358015158114610d9e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103e575f80fd5b823561104981610e70565b9150602083013567ffffffffffffffff811115611064575f80fd5b8301601f81018513611074575f80fd5b803567ffffffffffffffff81111561108e5761108e611000565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d9576110d9611000565b6040529182526020818401810192908101888411156110f6575f80fd5b6020850194505b8385101561111c5761110e85610e91565b8152602094850194016110fd565b5080945050505050925092905056fea264697066735822122015cfed9cd5ae011a6d03e982e1a53f50c8d72ae9618ad4ab2f462cb30bf07f1464736f6c634300081a0033",o1="0x608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610446578063fe9fbb8014610459578063fee81cf414610478575f80fd5b8063e3f756de146103d8578063ec87621c1461041f578063f04e283e14610433575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b806328d6183b11610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b806328d6183b1461023f5780632de94807146102795780634359d28a146102b8575f80fd5b80631c10893f116101615780631c10893f146101ef5780631cd64df4146102025780632569296214610237575f80fd5b806301ffc9a714610187578063141973b0146101bb578063183a4f6e146101dc575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5f565b6104a9565b60405190151581526020015b60405180910390f35b3480156101c6575f80fd5b506101da6101d5366004610ded565b610504565b005b6101da6101ea366004610e59565b610637565b6101da6101fd366004610ea1565b610644565b34801561020d575f80fd5b506101a661021c366004610ea1565b638b78c6d8600c9081525f9290925260209091205481161490565b6101da61065a565b34801561024a575f80fd5b506040517f3d30a22c0000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610284575f80fd5b506102aa610293366004610ecb565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102c3575f80fd5b506101da6102d2366004610ded565b6106a7565b3480156102e2575f80fd5b506101da6102f1366004610f24565b6107a1565b6101da610304366004610ea1565b6108d0565b348015610314575f80fd5b506101a6610323366004610ea1565b638b78c6d8600c9081525f9290925260209091205416151590565b6101da6108e2565b6101da61091b565b348015610359575f80fd5b506102aa600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101da6103b4366004610ded565b61092e565b3480156103c4575f80fd5b506101da6103d3366004610ded565b6109cc565b3480156103e3575f80fd5b506101a66103f2366004610f63565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff161590565b34801561042a575f80fd5b506102aa600181565b6101da610441366004610ecb565b610a6a565b6101da610454366004610ecb565b610aa4565b348015610464575f80fd5b506101a6610473366004610ecb565b610aca565b348015610483575f80fd5b506102aa610492366004610ecb565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f3d30a22c0000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610b29565b92915050565b61050d33610aca565b610543576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82811461057c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156106305782828281811061059857610598610fb4565b90506020020160208101906105ad9190610fe1565b5f808787858181106105c1576105c1610fb4565b90506020020160208101906105d69190610ecb565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161057e565b5050505050565b6106413382610b7e565b50565b61064c610b89565b6106568282610ba3565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026106b281610baf565b8382146106eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799575f84848381811061070857610708610fb4565b905060200201602081019061071d9190610fe1565b905080151560010361075f5761075a87878481811061073e5761073e610fb4565b90506020020160208101906107539190610ecb565b6001610ba3565b610790565b61079087878481811061077457610774610fb4565b90506020020160208101906107899190610ecb565b6001610b7e565b506001016106ed565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f25760018160011c14303b106107e95763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108018486018661102d565b9150915061080e82610be0565b5f5b81518110156108935760015f8084848151811061082f5761082f610fb4565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610810565b50505080156108cb576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d8610b89565b6106568282610b7e565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610923610b89565b61092c5f610c28565b565b600261093981610baf565b838214610972576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799576109c486868381811061099157610991610fb4565b90506020020160208101906109a69190610ecb565b8585848181106109b8576109b8610fb4565b90506020020135610ba3565b600101610974565b60026109d781610baf565b838214610a10576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079957610a62868683818110610a2f57610a2f610fb4565b9050602002016020810190610a449190610ecb565b858584818110610a5657610a56610fb4565b90506020020135610b7e565b600101610a12565b610a72610b89565b63389a75e1600c52805f526020600c208054421115610a9857636f5e88185f526004601cfd5b5f905561064181610c28565b610aac610b89565b8060601b610ac157637448fbae5f526004601cfd5b61064181610c28565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aef638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fe5750638b78c6d8600c9081525f839052602090205460031615156104fe565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610c72565b61065682825f610d08565b638b78c6d81954331461092c576382b429005f526004601cfd5b61065682826001610d08565b638b78c6d81954331461064157638b78c6d8600c52335f52806020600c205416610641576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fe57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fe565b638b78c6d8600c52825f526020600c20805483811783610d29575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6f575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9e575f80fd5b9392505050565b5f8083601f840112610db5575f80fd5b50813567ffffffffffffffff811115610dcc575f80fd5b6020830191508360208260051b8501011115610de6575f80fd5b9250929050565b5f805f8060408587031215610e00575f80fd5b843567ffffffffffffffff811115610e16575f80fd5b610e2287828801610da5565b909550935050602085013567ffffffffffffffff811115610e41575f80fd5b610e4d87828801610da5565b95989497509550505050565b5f60208284031215610e69575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610641575f80fd5b8035610e9c81610e70565b919050565b5f8060408385031215610eb2575f80fd5b8235610ebd81610e70565b946020939093013593505050565b5f60208284031215610edb575f80fd5b8135610d9e81610e70565b5f8083601f840112610ef6575f80fd5b50813567ffffffffffffffff811115610f0d575f80fd5b602083019150836020828501011115610de6575f80fd5b5f8060208385031215610f35575f80fd5b823567ffffffffffffffff811115610f4b575f80fd5b610f5785828601610ee6565b90969095509350505050565b5f805f60408486031215610f75575f80fd5b8335610f8081610e70565b9250602084013567ffffffffffffffff811115610f9b575f80fd5b610fa786828701610ee6565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff1575f80fd5b81358015158114610d9e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103e575f80fd5b823561104981610e70565b9150602083013567ffffffffffffffff811115611064575f80fd5b8301601f81018513611074575f80fd5b803567ffffffffffffffff81111561108e5761108e611000565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d9576110d9611000565b6040529182526020818401810192908101888411156110f6575f80fd5b6020850194505b8385101561111c5761110e85610e91565b8152602094850194016110fd565b5080945050505050925092905056fea264697066735822122015cfed9cd5ae011a6d03e982e1a53f50c8d72ae9618ad4ab2f462cb30bf07f1464736f6c634300081a0033",u1={},y1={},N0={_format:c1,contractName:i1,sourceName:s1,abi:r1,bytecode:p1,deployedBytecode:o1,linkReferences:u1,deployedLinkReferences:y1},l1="hh-sol-artifact-1",m1="ManagedBudget",T1="contracts/budgets/ManagedBudget.sol",w1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"FnSelectorNotRecognized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",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:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",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:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],h1="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612bba806100895f395ff3fe608060405260043610610252575f3560e01c8063715018a611610137578063ec87621c116100af578063f8724aba1161007e578063fa4ca9b111610063578063fa4ca9b11461076e578063fe9fbb801461078d578063fee81cf4146107ac57610259565b8063f8724aba14610730578063f9a802c31461074f57610259565b8063ec87621c146106b1578063f04e283e146106c5578063f23a6e61146106d8578063f2fde38b1461071d57610259565b8063b300579311610106578063be4994f8116100eb578063be4994f814610654578063d2514e8414610673578063dcc213611461069257610259565b8063b3005793146105c4578063bc197c811461060d57610259565b8063715018a61461052257806375b238fc1461052a578063774c33ab1461053e5780638da5cb5b1461058c57610259565b8063439fab91116101ca578063514e62fc11610199578063578bcf351161017e578063578bcf35146104af5780635aef467a146104f057806361400c991461050357610259565b8063514e62fc1461047257806354d1f13d146104a757610259565b8063439fab9114610400578063451cc1911461041f578063474f5a44146104405780634a4ee7b11461045f57610259565b80631cd64df41161022157806328d6183b1161020657806328d6183b146103515780632de94807146103b05780634359d28a146103e157610259565b80631cd64df414610314578063256929621461034957610259565b806301ffc9a71461028b57806310098ad5146102bf578063183a4f6e146102ec5780631c10893f1461030157610259565b3661025957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610296575f80fd5b506102aa6102a53660046120b8565b6107dd565b60405190151581526020015b60405180910390f35b3480156102ca575f80fd5b506102de6102d9366004612118565b6108d0565b6040519081526020016102b6565b6102ff6102fa366004612133565b610919565b005b6102ff61030f36600461214a565b610926565b34801561031f575f80fd5b506102aa61032e36600461214a565b638b78c6d8600c9081525f9290925260209091205481161490565b6102ff61093c565b34801561035c575f80fd5b507f5fbfaa4e000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016102b6565b3480156103bb575f80fd5b506102de6103ca366004612118565b638b78c6d8600c9081525f91909152602090205490565b3480156103ec575f80fd5b506102ff6103fb3660046121bc565b610989565b34801561040b575f80fd5b506102ff61041a366004612266565b610a83565b34801561042a575f80fd5b506102de610439366004612266565b5f92915050565b34801561044b575f80fd5b506102de61045a366004612266565b610b87565b6102ff61046d36600461214a565b610d4a565b34801561047d575f80fd5b506102aa61048c36600461214a565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ff610d5c565b3480156104ba575f80fd5b506102de6104c9366004612118565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b6102aa6104fe366004612266565b610d95565b34801561050e575f80fd5b506102aa61051d3660046122a5565b6110f5565b6102ff61113c565b348015610535575f80fd5b506102de600281565b348015610549575f80fd5b506102de61055836600461214a565b73ffffffffffffffffffffffffffffffffffffffff919091165f908152600160209081526040808320938352929052205490565b348015610597575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102b6565b3480156105cf575f80fd5b506105e36105de3660046122d8565b61114f565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102b6565b348015610618575f80fd5b5061037f61062736600461233a565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b34801561065f575f80fd5b506102ff61066e3660046121bc565b6112e4565b34801561067e575f80fd5b506102de61068d366004612118565b611382565b34801561069d575f80fd5b506102ff6106ac3660046121bc565b6113ba565b3480156106bc575f80fd5b506102de600181565b6102ff6106d3366004612118565b611458565b3480156106e3575f80fd5b5061037f6106f23660046123fd565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102ff61072b366004612118565b611492565b34801561073b575f80fd5b506102de61074a36600461214a565b6114b8565b34801561075a575f80fd5b506102de61076936600461214a565b611552565b348015610779575f80fd5b506102aa610788366004612266565b611609565b348015610798575f80fd5b506102aa6107a7366004612118565b6118e1565b3480156107b7575f80fd5b506102de6107c6366004612118565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e00000000000000000000000000000000000000000000000000000000148061086f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806108bb57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b806108ca57506108ca82611940565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff8216156109125761090d73ffffffffffffffffffffffffffffffffffffffff831630611995565b6108ca565b4792915050565b61092333826119c8565b50565b61092e6119d3565b61093882826119ed565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610994816119f9565b8382146109cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b575f8484838181106109ea576109ea612474565b90506020020160208101906109ff91906124a1565b9050801515600103610a4157610a3c878784818110610a2057610a20612474565b9050602002016020810190610a359190612118565b60016119ed565b610a72565b610a72878784818110610a5657610a56612474565b9050602002016020810190610a6b9190612118565b60016119c8565b506001016109cf565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610ad45760018160011c14303b10610acb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610ae283850185612615565b9050610af0815f0151611a2a565b5f5b816020015151811015610b4b57610b4382602001518281518110610b1857610b18612474565b602002602001015183604001518381518110610b3657610b36612474565b6020026020010151611a72565b600101610af2565b50508015610b82576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f6002610b93816119f9565b5f610ba084860186612764565b90505f8082516002811115610bb757610bb761284a565b1480610bd55750600182516002811115610bd357610bd361284a565b145b15610c2c575f8260600151806020019051810190610bf39190612877565b602084015160408501518251929350610c249215610c12578351611ab3565b610c1f86602001516108d0565b611ab3565b519050610d3f565b600282516002811115610c4157610c4161284a565b03610d36575f8260600151806020019051810190610c5f91906128b9565b9050610d2b83602001518460400151835f015184602001515f14610c87578460200151610d21565b602087015185516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915273ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa158015610cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d219190612977565b8560400151611c71565b602001519050610d3f565b9250610d439050565b9250505b5092915050565b610d526119d3565b61093882826119c8565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610da383850185612764565b90505f81516002811115610db957610db961284a565b03610e44575f8160600151806020019051810190610dd79190612877565b80519091503414610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b506110eb565b600181516002811115610e5957610e5961284a565b03610f2d575f8160600151806020019051810190610e779190612877565b604083015181516020850151929350610ea99273ffffffffffffffffffffffffffffffffffffffff1691903090611eb3565b80516020830151610ed09073ffffffffffffffffffffffffffffffffffffffff1630611995565b1015610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b600281516002811115610f4257610f4261284a565b036110e2575f8160600151806020019051810190610f6091906128b9565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b8152600401610fb69594939291906129da565b5f604051808303815f87803b158015610fcd575f80fd5b505af1158015610fdf573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915291925073ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa15801561105e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110829190612977565b1015610e3e57602080830151908201516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b5f9150506108ca565b5060019392505050565b5f805b828110156110eb5761112784848381811061111557611115612474565b90506020028101906107889190612a3b565b611134575f9150506108ca565b6001016110f8565b6111446119d3565b61114d5f611f15565b565b5f8061115a336118e1565b611190576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a92909150819073ffffffffffffffffffffffffffffffffffffffff84169063dd98558c90611228908790602001612a9c565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161125793929190612ade565b60408051808303815f875af1158015611272573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112969190612b02565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120805493955091935084926112cf908490612b5e565b90915550919b909a5098505050505050505050565b60026112ef816119f9565b838214611328576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761137a86868381811061134757611347612474565b905060200201602081019061135c9190612118565b85858481811061136e5761136e612474565b905060200201356119ed565b60010161132a565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120546113b0836108d0565b6108ca9190612b71565b60026113c5816119f9565b8382146113fe576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761145086868381811061141d5761141d612474565b90506020020160208101906114329190612118565b85858481811061144457611444612474565b905060200201356119c8565b600101611400565b6114606119d3565b63389a75e1600c52805f526020600c20805442111561148657636f5e88185f526004601cfd5b5f905561092381611f15565b61149a6119d3565b8060601b6114af57637448fbae5f526004601cfd5b61092381611f15565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f9073ffffffffffffffffffffffffffffffffffffffff84169062fdd58e90604401602060405180830381865afa158015611527573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154b9190612977565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82165f8181526001602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa1580156115db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ff9190612977565b61154b9190612b71565b5f611613336118e1565b611649576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61165683850185612764565b905060018151600281111561166d5761166d61284a565b148061168a57505f815160028111156116885761168861284a565b145b15611780575f81606001518060200190518101906116a89190612877565b90505f6116b883602001516108d0565b905080825f0151111561172357602083015182516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b815160208085015173ffffffffffffffffffffffffffffffffffffffff165f9081529081905260408120805490919061175d908490612b71565b9091555050602083015160408401518351611779929190611ab3565b50506110eb565b6002815160028111156117955761179561284a565b036110e2575f81606001518060200190518101906117b391906128b9565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f9173ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa15801561182e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118529190612977565b905080826020015111156118c157602080840151908301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b61177983602001518460400151845f015185602001518660400151611c71565b5f8173ffffffffffffffffffffffffffffffffffffffff16611906638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806108ca5750638b78c6d8600c9081525f839052602090205460031615156108ca565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806108ca57506108ca82611f5f565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61093882825f611ff5565b638b78c6d81954331461114d576382b429005f526004601cfd5b61093882826001611ff5565b638b78c6d81954331461092357638b78c6d8600c52335f52806020600c205416610923576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611ad15763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8216611b51576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610e35565b611b5a836108d0565b811115611bc25782611b6b846108d0565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff8316611bec57611be7828261204c565b611c0d565b611c0d73ffffffffffffffffffffffffffffffffffffffff84168383612065565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403611c8f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8416611d0f576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301528516602482015260448101839052606401610e35565b611d1985846114b8565b821115611d825784611d2b86856114b8565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101839052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020908152604080832086845290915281208054849290611dc1908490612b71565b90915550506040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063f242432a90611e2090309088908890889088906004016129da565b5f604051808303815f87803b158015611e37575f80fd5b505af1158015611e49573d5f803e3d5ffd5b50506040805173ffffffffffffffffffffffffffffffffffffffff888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f511416611f0757803d873b151710611f0757637939f4245f526004601cfd5b505f60605260405250505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806108ca57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146108ca565b638b78c6d8600c52825f526020600c20805483811783612016575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109385763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f5114166120ae57803d853b1517106120ae576390b8ec185f526004601cfd5b505f603452505050565b5f602082840312156120c8575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154b575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610923575f80fd5b5f60208284031215612128575f80fd5b813561154b816120f7565b5f60208284031215612143575f80fd5b5035919050565b5f806040838503121561215b575f80fd5b8235612166816120f7565b946020939093013593505050565b5f8083601f840112612184575f80fd5b50813567ffffffffffffffff81111561219b575f80fd5b6020830191508360208260051b85010111156121b5575f80fd5b9250929050565b5f805f80604085870312156121cf575f80fd5b843567ffffffffffffffff8111156121e5575f80fd5b6121f187828801612174565b909550935050602085013567ffffffffffffffff811115612210575f80fd5b61221c87828801612174565b95989497509550505050565b5f8083601f840112612238575f80fd5b50813567ffffffffffffffff81111561224f575f80fd5b6020830191508360208285010111156121b5575f80fd5b5f8060208385031215612277575f80fd5b823567ffffffffffffffff81111561228d575f80fd5b61229985828601612228565b90969095509350505050565b5f80602083850312156122b6575f80fd5b823567ffffffffffffffff8111156122cc575f80fd5b61229985828601612174565b5f805f805f608086880312156122ec575f80fd5b85356122f7816120f7565b9450602086013567ffffffffffffffff811115612312575f80fd5b61231e88828901612228565b9699909850959660408101359660609091013595509350505050565b5f805f805f805f8060a0898b031215612351575f80fd5b883561235c816120f7565b9750602089013561236c816120f7565b9650604089013567ffffffffffffffff811115612387575f80fd5b6123938b828c01612174565b909750955050606089013567ffffffffffffffff8111156123b2575f80fd5b6123be8b828c01612174565b909550935050608089013567ffffffffffffffff8111156123dd575f80fd5b6123e98b828c01612228565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612412575f80fd5b863561241d816120f7565b9550602087013561242d816120f7565b94506040870135935060608701359250608087013567ffffffffffffffff811115612456575f80fd5b61246289828a01612228565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156124b1575f80fd5b8135801515811461154b575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715612510576125106124c0565b60405290565b6040516080810167ffffffffffffffff81118282101715612510576125106124c0565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612580576125806124c0565b604052919050565b5f67ffffffffffffffff8211156125a1576125a16124c0565b5060051b60200190565b5f82601f8301126125ba575f80fd5b81356125cd6125c882612588565b612539565b8082825260208201915060208360051b8601019250858311156125ee575f80fd5b602085015b8381101561260b5780358352602092830192016125f3565b5095945050505050565b5f60208284031215612625575f80fd5b813567ffffffffffffffff81111561263b575f80fd5b82016060818503121561264c575f80fd5b6126546124ed565b813561265f816120f7565b8152602082013567ffffffffffffffff81111561267a575f80fd5b8201601f8101861361268a575f80fd5b80356126986125c882612588565b8082825260208201915060208360051b8501019250888311156126b9575f80fd5b6020840193505b828410156126e45783356126d3816120f7565b8252602093840193909101906126c0565b6020850152505050604082013567ffffffffffffffff811115612705575f80fd5b612711868285016125ab565b604083015250949350505050565b5f67ffffffffffffffff821115612738576127386124c0565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f60208284031215612774575f80fd5b813567ffffffffffffffff81111561278a575f80fd5b82016080818503121561279b575f80fd5b6127a3612516565b8135600381106127b1575f80fd5b815260208201356127c1816120f7565b602082015260408201356127d4816120f7565b6040820152606082013567ffffffffffffffff8111156127f2575f80fd5b80830192505084601f830112612806575f80fd5b81356128146125c88261271f565b818152866020838601011115612828575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015612888575f80fd5b506040516020810167ffffffffffffffff811182821017156128ac576128ac6124c0565b6040529151825250919050565b5f602082840312156128c9575f80fd5b815167ffffffffffffffff8111156128df575f80fd5b8201606081850312156128f0575f80fd5b6128f86124ed565b8151815260208083015190820152604082015167ffffffffffffffff81111561291f575f80fd5b80830192505084601f830112612933575f80fd5b81516129416125c88261271f565b818152866020838601011115612955575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f60208284031215612987575f80fd5b5051919050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f612a3060a083018461298e565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612a6e575f80fd5b83018035915067ffffffffffffffff821115612a88575f80fd5b6020019150368190038213156121b5575f80fd5b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612ad6606084018261298e565b949350505050565b606081525f612af0606083018661298e565b60208301949094525060400152919050565b5f8060408385031215612b13575f80fd5b82516020840151909250612b26816120f7565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156108ca576108ca612b31565b808201808211156108ca576108ca612b3156fea2646970667358221220c4ceb61ae9b147f3db7bb6eeb085a96e57c86e7cb30da8dcd16fc766f3342fb164736f6c634300081a0033",v1="0x608060405260043610610252575f3560e01c8063715018a611610137578063ec87621c116100af578063f8724aba1161007e578063fa4ca9b111610063578063fa4ca9b11461076e578063fe9fbb801461078d578063fee81cf4146107ac57610259565b8063f8724aba14610730578063f9a802c31461074f57610259565b8063ec87621c146106b1578063f04e283e146106c5578063f23a6e61146106d8578063f2fde38b1461071d57610259565b8063b300579311610106578063be4994f8116100eb578063be4994f814610654578063d2514e8414610673578063dcc213611461069257610259565b8063b3005793146105c4578063bc197c811461060d57610259565b8063715018a61461052257806375b238fc1461052a578063774c33ab1461053e5780638da5cb5b1461058c57610259565b8063439fab91116101ca578063514e62fc11610199578063578bcf351161017e578063578bcf35146104af5780635aef467a146104f057806361400c991461050357610259565b8063514e62fc1461047257806354d1f13d146104a757610259565b8063439fab9114610400578063451cc1911461041f578063474f5a44146104405780634a4ee7b11461045f57610259565b80631cd64df41161022157806328d6183b1161020657806328d6183b146103515780632de94807146103b05780634359d28a146103e157610259565b80631cd64df414610314578063256929621461034957610259565b806301ffc9a71461028b57806310098ad5146102bf578063183a4f6e146102ec5780631c10893f1461030157610259565b3661025957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610296575f80fd5b506102aa6102a53660046120b8565b6107dd565b60405190151581526020015b60405180910390f35b3480156102ca575f80fd5b506102de6102d9366004612118565b6108d0565b6040519081526020016102b6565b6102ff6102fa366004612133565b610919565b005b6102ff61030f36600461214a565b610926565b34801561031f575f80fd5b506102aa61032e36600461214a565b638b78c6d8600c9081525f9290925260209091205481161490565b6102ff61093c565b34801561035c575f80fd5b507f5fbfaa4e000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016102b6565b3480156103bb575f80fd5b506102de6103ca366004612118565b638b78c6d8600c9081525f91909152602090205490565b3480156103ec575f80fd5b506102ff6103fb3660046121bc565b610989565b34801561040b575f80fd5b506102ff61041a366004612266565b610a83565b34801561042a575f80fd5b506102de610439366004612266565b5f92915050565b34801561044b575f80fd5b506102de61045a366004612266565b610b87565b6102ff61046d36600461214a565b610d4a565b34801561047d575f80fd5b506102aa61048c36600461214a565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ff610d5c565b3480156104ba575f80fd5b506102de6104c9366004612118565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b6102aa6104fe366004612266565b610d95565b34801561050e575f80fd5b506102aa61051d3660046122a5565b6110f5565b6102ff61113c565b348015610535575f80fd5b506102de600281565b348015610549575f80fd5b506102de61055836600461214a565b73ffffffffffffffffffffffffffffffffffffffff919091165f908152600160209081526040808320938352929052205490565b348015610597575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102b6565b3480156105cf575f80fd5b506105e36105de3660046122d8565b61114f565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102b6565b348015610618575f80fd5b5061037f61062736600461233a565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b34801561065f575f80fd5b506102ff61066e3660046121bc565b6112e4565b34801561067e575f80fd5b506102de61068d366004612118565b611382565b34801561069d575f80fd5b506102ff6106ac3660046121bc565b6113ba565b3480156106bc575f80fd5b506102de600181565b6102ff6106d3366004612118565b611458565b3480156106e3575f80fd5b5061037f6106f23660046123fd565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102ff61072b366004612118565b611492565b34801561073b575f80fd5b506102de61074a36600461214a565b6114b8565b34801561075a575f80fd5b506102de61076936600461214a565b611552565b348015610779575f80fd5b506102aa610788366004612266565b611609565b348015610798575f80fd5b506102aa6107a7366004612118565b6118e1565b3480156107b7575f80fd5b506102de6107c6366004612118565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e00000000000000000000000000000000000000000000000000000000148061086f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806108bb57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b806108ca57506108ca82611940565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff8216156109125761090d73ffffffffffffffffffffffffffffffffffffffff831630611995565b6108ca565b4792915050565b61092333826119c8565b50565b61092e6119d3565b61093882826119ed565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610994816119f9565b8382146109cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b575f8484838181106109ea576109ea612474565b90506020020160208101906109ff91906124a1565b9050801515600103610a4157610a3c878784818110610a2057610a20612474565b9050602002016020810190610a359190612118565b60016119ed565b610a72565b610a72878784818110610a5657610a56612474565b9050602002016020810190610a6b9190612118565b60016119c8565b506001016109cf565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610ad45760018160011c14303b10610acb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610ae283850185612615565b9050610af0815f0151611a2a565b5f5b816020015151811015610b4b57610b4382602001518281518110610b1857610b18612474565b602002602001015183604001518381518110610b3657610b36612474565b6020026020010151611a72565b600101610af2565b50508015610b82576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f6002610b93816119f9565b5f610ba084860186612764565b90505f8082516002811115610bb757610bb761284a565b1480610bd55750600182516002811115610bd357610bd361284a565b145b15610c2c575f8260600151806020019051810190610bf39190612877565b602084015160408501518251929350610c249215610c12578351611ab3565b610c1f86602001516108d0565b611ab3565b519050610d3f565b600282516002811115610c4157610c4161284a565b03610d36575f8260600151806020019051810190610c5f91906128b9565b9050610d2b83602001518460400151835f015184602001515f14610c87578460200151610d21565b602087015185516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915273ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa158015610cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d219190612977565b8560400151611c71565b602001519050610d3f565b9250610d439050565b9250505b5092915050565b610d526119d3565b61093882826119c8565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610da383850185612764565b90505f81516002811115610db957610db961284a565b03610e44575f8160600151806020019051810190610dd79190612877565b80519091503414610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b506110eb565b600181516002811115610e5957610e5961284a565b03610f2d575f8160600151806020019051810190610e779190612877565b604083015181516020850151929350610ea99273ffffffffffffffffffffffffffffffffffffffff1691903090611eb3565b80516020830151610ed09073ffffffffffffffffffffffffffffffffffffffff1630611995565b1015610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b600281516002811115610f4257610f4261284a565b036110e2575f8160600151806020019051810190610f6091906128b9565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b8152600401610fb69594939291906129da565b5f604051808303815f87803b158015610fcd575f80fd5b505af1158015610fdf573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915291925073ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa15801561105e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110829190612977565b1015610e3e57602080830151908201516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b5f9150506108ca565b5060019392505050565b5f805b828110156110eb5761112784848381811061111557611115612474565b90506020028101906107889190612a3b565b611134575f9150506108ca565b6001016110f8565b6111446119d3565b61114d5f611f15565b565b5f8061115a336118e1565b611190576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a92909150819073ffffffffffffffffffffffffffffffffffffffff84169063dd98558c90611228908790602001612a9c565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161125793929190612ade565b60408051808303815f875af1158015611272573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112969190612b02565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120805493955091935084926112cf908490612b5e565b90915550919b909a5098505050505050505050565b60026112ef816119f9565b838214611328576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761137a86868381811061134757611347612474565b905060200201602081019061135c9190612118565b85858481811061136e5761136e612474565b905060200201356119ed565b60010161132a565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120546113b0836108d0565b6108ca9190612b71565b60026113c5816119f9565b8382146113fe576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761145086868381811061141d5761141d612474565b90506020020160208101906114329190612118565b85858481811061144457611444612474565b905060200201356119c8565b600101611400565b6114606119d3565b63389a75e1600c52805f526020600c20805442111561148657636f5e88185f526004601cfd5b5f905561092381611f15565b61149a6119d3565b8060601b6114af57637448fbae5f526004601cfd5b61092381611f15565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f9073ffffffffffffffffffffffffffffffffffffffff84169062fdd58e90604401602060405180830381865afa158015611527573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154b9190612977565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82165f8181526001602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa1580156115db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ff9190612977565b61154b9190612b71565b5f611613336118e1565b611649576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61165683850185612764565b905060018151600281111561166d5761166d61284a565b148061168a57505f815160028111156116885761168861284a565b145b15611780575f81606001518060200190518101906116a89190612877565b90505f6116b883602001516108d0565b905080825f0151111561172357602083015182516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b815160208085015173ffffffffffffffffffffffffffffffffffffffff165f9081529081905260408120805490919061175d908490612b71565b9091555050602083015160408401518351611779929190611ab3565b50506110eb565b6002815160028111156117955761179561284a565b036110e2575f81606001518060200190518101906117b391906128b9565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f9173ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa15801561182e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118529190612977565b905080826020015111156118c157602080840151908301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b61177983602001518460400151845f015185602001518660400151611c71565b5f8173ffffffffffffffffffffffffffffffffffffffff16611906638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806108ca5750638b78c6d8600c9081525f839052602090205460031615156108ca565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806108ca57506108ca82611f5f565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61093882825f611ff5565b638b78c6d81954331461114d576382b429005f526004601cfd5b61093882826001611ff5565b638b78c6d81954331461092357638b78c6d8600c52335f52806020600c205416610923576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611ad15763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8216611b51576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610e35565b611b5a836108d0565b811115611bc25782611b6b846108d0565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff8316611bec57611be7828261204c565b611c0d565b611c0d73ffffffffffffffffffffffffffffffffffffffff84168383612065565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403611c8f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8416611d0f576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301528516602482015260448101839052606401610e35565b611d1985846114b8565b821115611d825784611d2b86856114b8565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101839052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020908152604080832086845290915281208054849290611dc1908490612b71565b90915550506040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063f242432a90611e2090309088908890889088906004016129da565b5f604051808303815f87803b158015611e37575f80fd5b505af1158015611e49573d5f803e3d5ffd5b50506040805173ffffffffffffffffffffffffffffffffffffffff888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f511416611f0757803d873b151710611f0757637939f4245f526004601cfd5b505f60605260405250505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806108ca57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146108ca565b638b78c6d8600c52825f526020600c20805483811783612016575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109385763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f5114166120ae57803d853b1517106120ae576390b8ec185f526004601cfd5b505f603452505050565b5f602082840312156120c8575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154b575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610923575f80fd5b5f60208284031215612128575f80fd5b813561154b816120f7565b5f60208284031215612143575f80fd5b5035919050565b5f806040838503121561215b575f80fd5b8235612166816120f7565b946020939093013593505050565b5f8083601f840112612184575f80fd5b50813567ffffffffffffffff81111561219b575f80fd5b6020830191508360208260051b85010111156121b5575f80fd5b9250929050565b5f805f80604085870312156121cf575f80fd5b843567ffffffffffffffff8111156121e5575f80fd5b6121f187828801612174565b909550935050602085013567ffffffffffffffff811115612210575f80fd5b61221c87828801612174565b95989497509550505050565b5f8083601f840112612238575f80fd5b50813567ffffffffffffffff81111561224f575f80fd5b6020830191508360208285010111156121b5575f80fd5b5f8060208385031215612277575f80fd5b823567ffffffffffffffff81111561228d575f80fd5b61229985828601612228565b90969095509350505050565b5f80602083850312156122b6575f80fd5b823567ffffffffffffffff8111156122cc575f80fd5b61229985828601612174565b5f805f805f608086880312156122ec575f80fd5b85356122f7816120f7565b9450602086013567ffffffffffffffff811115612312575f80fd5b61231e88828901612228565b9699909850959660408101359660609091013595509350505050565b5f805f805f805f8060a0898b031215612351575f80fd5b883561235c816120f7565b9750602089013561236c816120f7565b9650604089013567ffffffffffffffff811115612387575f80fd5b6123938b828c01612174565b909750955050606089013567ffffffffffffffff8111156123b2575f80fd5b6123be8b828c01612174565b909550935050608089013567ffffffffffffffff8111156123dd575f80fd5b6123e98b828c01612228565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612412575f80fd5b863561241d816120f7565b9550602087013561242d816120f7565b94506040870135935060608701359250608087013567ffffffffffffffff811115612456575f80fd5b61246289828a01612228565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156124b1575f80fd5b8135801515811461154b575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715612510576125106124c0565b60405290565b6040516080810167ffffffffffffffff81118282101715612510576125106124c0565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612580576125806124c0565b604052919050565b5f67ffffffffffffffff8211156125a1576125a16124c0565b5060051b60200190565b5f82601f8301126125ba575f80fd5b81356125cd6125c882612588565b612539565b8082825260208201915060208360051b8601019250858311156125ee575f80fd5b602085015b8381101561260b5780358352602092830192016125f3565b5095945050505050565b5f60208284031215612625575f80fd5b813567ffffffffffffffff81111561263b575f80fd5b82016060818503121561264c575f80fd5b6126546124ed565b813561265f816120f7565b8152602082013567ffffffffffffffff81111561267a575f80fd5b8201601f8101861361268a575f80fd5b80356126986125c882612588565b8082825260208201915060208360051b8501019250888311156126b9575f80fd5b6020840193505b828410156126e45783356126d3816120f7565b8252602093840193909101906126c0565b6020850152505050604082013567ffffffffffffffff811115612705575f80fd5b612711868285016125ab565b604083015250949350505050565b5f67ffffffffffffffff821115612738576127386124c0565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f60208284031215612774575f80fd5b813567ffffffffffffffff81111561278a575f80fd5b82016080818503121561279b575f80fd5b6127a3612516565b8135600381106127b1575f80fd5b815260208201356127c1816120f7565b602082015260408201356127d4816120f7565b6040820152606082013567ffffffffffffffff8111156127f2575f80fd5b80830192505084601f830112612806575f80fd5b81356128146125c88261271f565b818152866020838601011115612828575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015612888575f80fd5b506040516020810167ffffffffffffffff811182821017156128ac576128ac6124c0565b6040529151825250919050565b5f602082840312156128c9575f80fd5b815167ffffffffffffffff8111156128df575f80fd5b8201606081850312156128f0575f80fd5b6128f86124ed565b8151815260208083015190820152604082015167ffffffffffffffff81111561291f575f80fd5b80830192505084601f830112612933575f80fd5b81516129416125c88261271f565b818152866020838601011115612955575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f60208284031215612987575f80fd5b5051919050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f612a3060a083018461298e565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612a6e575f80fd5b83018035915067ffffffffffffffff821115612a88575f80fd5b6020019150368190038213156121b5575f80fd5b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612ad6606084018261298e565b949350505050565b606081525f612af0606083018661298e565b60208301949094525060400152919050565b5f8060408385031215612b13575f80fd5b82516020840151909250612b26816120f7565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156108ca576108ca612b31565b808201808211156108ca576108ca612b3156fea2646970667358221220c4ceb61ae9b147f3db7bb6eeb085a96e57c86e7cb30da8dcd16fc766f3342fb164736f6c634300081a0033",g1={},M1={},P0={_format:l1,contractName:m1,sourceName:T1,abi:w1,bytecode:h1,deployedBytecode:v1,linkReferences:g1,deployedLinkReferences:M1},I1="hh-sol-artifact-1",x1="ManagedBudgetWithFees",A1="contracts/budgets/ManagedBudgetWithFees.sol",E1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"FnSelectorNotRecognized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"ZeroBalancePayout",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"questId",type:"uint256"},{indexed:!0,internalType:"uint256",name:"incentiveId",type:"uint256"},{indexed:!0,internalType:"address",name:"manager",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ManagementFeePaid",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newFee",type:"uint256"}],name:"ManagementFeeSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTargetAndPayFee",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"asset",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"incentiveFeesDisbursed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"incentiveFeesMax",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"managementFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",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:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"payManagementFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"reservedFunds",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"fee_",type:"uint256"}],name:"setManagementFee",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:[{internalType:"address",name:"target",type:"address"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"topupIncentive",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],R1="0x6080604052348015600e575f80fd5b506015601f565b601b601f565b6082565b63409feecd1980546001811615603c5763f92ee8a95f526004601cfd5b6001600160401b03808260011c14607d578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6137ad8061008f5f395ff3fe6080604052600436106102ea575f3560e01c806375b238fc11610183578063dcc21361116100d5578063f8724aba11610089578063fe56e23211610063578063fe56e232146108e4578063fe9fbb8014610903578063fee81cf414610922576102f1565b8063f8724aba14610887578063f9a802c3146108a6578063fa4ca9b1146108c5576102f1565b8063f04e283e116100ba578063f04e283e1461081c578063f23a6e611461082f578063f2fde38b14610874576102f1565b8063dcc21361146107e9578063ec87621c14610808576102f1565b8063b300579311610137578063c6004a3a11610111578063c6004a3a14610774578063d2514e841461079f578063d8c12d22146107be576102f1565b8063b3005793146106ef578063bc197c811461070e578063be4994f814610755576102f1565b80638da5cb5b116101685780638da5cb5b14610690578063929470eb146106bb578063a6f7f5d6146106da576102f1565b806375b238fc1461063b578063774c33ab1461064f576102f1565b8063439fab911161023c578063514e62fc116101f05780635aef467a116101ca5780635aef467a1461060157806361400c9914610614578063715018a614610633576102f1565b8063514e62fc1461059057806354d1f13d146105c5578063578bcf35146105cd576102f1565b8063451cc19111610221578063451cc1911461053d578063474f5a441461055e5780634a4ee7b11461057d576102f1565b8063439fab91146104ff57806343cc96e11461051e576102f1565b80631c10893f1161029e57806328d6183b1161027857806328d6183b146104505780632de94807146104af5780634359d28a146104e0576102f1565b80631c10893f146104005780631cd64df4146104135780632569296214610448576102f1565b806314135ce0116102cf57806314135ce014610384578063183a4f6e146103af578063185832a3146103c4576102f1565b806301ffc9a71461032357806310098ad514610357576102f1565b366102f157005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561032e575f80fd5b5061034261033d3660046129c8565b610953565b60405190151581526020015b60405180910390f35b348015610362575f80fd5b50610376610371366004612a1b565b610963565b60405190815260200161034e565b34801561038f575f80fd5b5061037661039e366004612a1b565b60046020525f908152604090205481565b6103c26103bd366004612a36565b61098e565b005b3480156103cf575f80fd5b506103e36103de366004612a92565b61099b565b604080519283526001600160a01b0390911660208301520161034e565b6103c261040e366004612af4565b6109c3565b34801561041e575f80fd5b5061034261042d366004612af4565b638b78c6d8600c9081525f9290925260209091205481161490565b6103c26109d9565b34801561045b575f80fd5b507fde98bbf0000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161034e565b3480156104ba575f80fd5b506103766104c9366004612a1b565b638b78c6d8600c9081525f91909152602090205490565b3480156104eb575f80fd5b506103c26104fa366004612b5f565b610a26565b34801561050a575f80fd5b506103c2610519366004612bcb565b610b20565b348015610529575f80fd5b506103c2610538366004612c0a565b610d2a565b348015610548575f80fd5b50610376610557366004612bcb565b5f92915050565b348015610569575f80fd5b50610376610578366004612bcb565b6110b3565b6103c261058b366004612af4565b611269565b34801561059b575f80fd5b506103426105aa366004612af4565b638b78c6d8600c9081525f9290925260209091205416151590565b6103c261127b565b3480156105d8575f80fd5b506103766105e7366004612a1b565b6001600160a01b03165f9081526005602052604090205490565b61034261060f366004612bcb565b6112b4565b34801561061f575f80fd5b5061034261062e366004612c2a565b6115b4565b6103c26115fb565b348015610646575f80fd5b50610376600281565b34801561065a575f80fd5b50610376610669366004612af4565b6001600160a01b03919091165f908152600660209081526040808320938352929052205490565b34801561069b575f80fd5b50638b78c6d819546040516001600160a01b03909116815260200161034e565b3480156106c6575f80fd5b506103426106d5366004612c5d565b61160e565b3480156106e5575f80fd5b5061037660015481565b3480156106fa575f80fd5b506103e3610709366004612a92565b6116d4565b348015610719575f80fd5b5061047e610728366004612cc2565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610760575f80fd5b506103c261076f366004612b5f565b611842565b34801561077f575f80fd5b5061037661078e366004612a1b565b60036020525f908152604090205481565b3480156107aa575f80fd5b506103766107b9366004612a1b565b6118e0565b3480156107c9575f80fd5b506103766107d8366004612a1b565b60026020525f908152604090205481565b3480156107f4575f80fd5b506103c2610803366004612b5f565b611920565b348015610813575f80fd5b50610376600181565b6103c261082a366004612a1b565b6119be565b34801561083a575f80fd5b5061047e610849366004612d85565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6103c2610882366004612a1b565b6119f8565b348015610892575f80fd5b506103766108a1366004612af4565b611a1e565b3480156108b1575f80fd5b506103766108c0366004612af4565b611aab565b3480156108d0575f80fd5b506103426108df366004612bcb565b611b55565b3480156108ef575f80fd5b506103c26108fe366004612a36565b611e9d565b34801561090e575f80fd5b5061034261091d366004612a1b565b611f50565b34801561092d575f80fd5b5061037661093c366004612a1b565b63389a75e1600c9081525f91909152602090205490565b5f61095d82611f95565b92915050565b6001600160a01b0381165f9081526004602052604081205461098483611fea565b61095d9190612e29565b6109983382612019565b50565b5f806109aa87878787876116d4565b90925090506109b98484610d2a565b9550959350505050565b6109cb612024565b6109d5828261203e565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610a318161204a565b838214610a6a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18575f848483818110610a8757610a87612e3c565b9050602002016020810190610a9c9190612e76565b9050801515600103610ade57610ad9878784818110610abd57610abd612e3c565b9050602002016020810190610ad29190612a1b565b600161203e565b610b0f565b610b0f878784818110610af357610af3612e3c565b9050602002016020810190610b089190612a1b565b6001612019565b50600101610a6c565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610b715760018160011c14303b10610b685763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610b7f8385018561300a565b9050610b8d815f015161207b565b5f5b816020015151811015610be857610be082602001518281518110610bb557610bb5612e3c565b602002602001015183604001518381518110610bd357610bd3612e3c565b60200260200101516120b6565b600101610b8f565b508060200151515f03610c5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6e6f20636f726520636f6e74726163742073657400000000000000000000000060448201526064015b60405180910390fd5b80602001515f81518110610c7257610c72612e3c565b6020908102919091018101515f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055606082015160018190556040519081527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd0978910160405180910390a1508015610d25576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80546040517f13c8e2de000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b03909116906313c8e2de906024015f60405180830381865afa158015610d89573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610dce91908101906131ab565b90505f81608001518381518110610de757610de7612e3c565b60209081029190910101516040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f7cc1d5bb0000000000000000000000000000000000000000000000000000000060048201529091506001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610e70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e949190613288565b15610f6e575f816001600160a01b031663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb91906132a3565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610f3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5f91906132a3565b9050610b1886868685856120f7565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f903181110000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610fe9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100d9190613288565b156102f1575f816001600160a01b031663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611050573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107491906132a3565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3b573d5f803e3d5ffd5b5f60026110bf8161204a565b5f6110cc848601866132ff565b90505f80825160028111156110e3576110e36133e5565b148061110157506001825160028111156110ff576110ff6133e5565b145b15611158575f826060015180602001905181019061111f9190613412565b602084015160408501518251929350611150921561113e5783516122fc565b61114b8660200151610963565b6122fc565b51905061125e565b60028251600281111561116d5761116d6133e5565b03611255575f826060015180602001905181019061118b9190613454565b905061124a83602001518460400151835f015184602001515f146111b3578460200151611240565b602087015185516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091526001600160a01b039091169062fdd58e90604401602060405180830381865afa15801561121c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061124091906132a3565b856040015161246c565b60200151905061125e565b92506112629050565b9250505b5092915050565b611271612024565b6109d58282612019565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f806112c2838501856132ff565b90505f815160028111156112d8576112d86133e5565b03611351575f81606001518060200190518101906112f69190613412565b8051909150341461134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b506115aa565b600181516002811115611366576113666133e5565b03611413575f81606001518060200190518101906113849190613412565b6040830151815160208501519293506113a9926001600160a01b031691903090612660565b805160208301516113c3906001600160a01b0316306126c2565b101561134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b600281516002811115611428576114286133e5565b036115a1575f81606001518060200190518101906114469190613454565b905081602001516001600160a01b031663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161148f95949392919061355e565b5f604051808303815f87803b1580156114a6575f80fd5b505af11580156114b8573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192506001600160a01b03169062fdd58e90604401602060405180830381865afa15801561152a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154e91906132a3565b101561134b57602080830151908201516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b5f91505061095d565b5060019392505050565b5f805b828110156115aa576115e68484838181106115d4576115d4612e3c565b90506020028101906108df91906135a5565b6115f3575f91505061095d565b6001016115b7565b611603612024565b61160c5f6126f5565b565b5f61161833611f50565b61164e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1fa2acdc0000000000000000000000000000000000000000000000000000000081526001600160a01b03871690631fa2acdc9061169b9088908890889088903090600401613606565b5f604051808303815f87803b1580156116b2575f80fd5b505af11580156116c4573d5f803e3d5ffd5b5060019998505050505050505050565b5f806116df33611f50565b611715576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060400160405280306001600160a01b0316815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a9290915081906001600160a01b0384169063dd98558c90611793908790602001613672565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b81526004016117c2939291906136a7565b60408051808303815f875af11580156117dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180191906136cb565b6001600160a01b0381165f9081526005602052604081208054939550919350849261182d908490612e29565b90915550919b909a5098505050505050505050565b600261184d8161204a565b838214611886576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576118d88686838181106118a5576118a5612e3c565b90506020020160208101906118ba9190612a1b565b8585848181106118cc576118cc612e3c565b9050602002013561203e565b600101611888565b6001600160a01b0381165f90815260046020908152604080832054600590925282205461190c84610963565b61191691906136fa565b61095d91906136fa565b600261192b8161204a565b838214611964576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576119b686868381811061198357611983612e3c565b90506020020160208101906119989190612a1b565b8585848181106119aa576119aa612e3c565b90506020020135612019565b600101611966565b6119c6612024565b63389a75e1600c52805f526020600c2080544211156119ec57636f5e88185f526004601cfd5b5f9055610998816126f5565b611a00612024565b8060601b611a1557637448fbae5f526004601cfd5b610998816126f5565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f906001600160a01b0384169062fdd58e90604401602060405180830381865afa158015611a80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa491906132a3565b9392505050565b6001600160a01b0382165f8181526006602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa158015611b27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b4b91906132a3565b611aa491906136fa565b5f611b5f33611f50565b611b95576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611ba2838501856132ff565b9050600181516002811115611bb957611bb96133e5565b1480611bd657505f81516002811115611bd457611bd46133e5565b145b15611d4f575f8160600151806020019051810190611bf49190613412565b90505f612710600154835f0151611c0b919061370d565b611c159190613724565b90505f611c258460200151610963565b90508082845f0151611c3791906136fa565b1115611c9c57602084015183518290611c519085906136fa565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b03909316600484015260248301919091526044820152606401610c53565b6040808501516001600160a01b03165f90815260026020529081208054849290611cc79084906136fa565b90915550506020808501516001600160a01b03165f9081526004909152604081208054849290611cf89084906136fa565b909155505082516020808601516001600160a01b03165f9081526005909152604081208054909190611d2b9084906136fa565b9091555050602084015160408501518451611d479291906122fc565b5050506115aa565b600281516002811115611d6457611d646133e5565b036115a1575f8160600151806020019051810190611d829190613454565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f916001600160a01b039091169062fdd58e90604401602060405180830381865afa158015611df0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e1491906132a3565b90508082602001511115611e7657602080840151908301516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482018390526044820152606401610c53565b611e9683602001518460400151845f01518560200151866040015161246c565b50506115aa565b6002611ea88161204a565b612710821115611f14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4665652063616e6e6f74206578636565642031303025000000000000000000006044820152606401610c53565b60018290556040518281527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09789060200160405180910390a15050565b5f816001600160a01b0316611f68638b78c6d8195490565b6001600160a01b0316148061095d5750638b78c6d8600c9081525f8390526020902054600316151561095d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fde98bbf000000000000000000000000000000000000000000000000000000000148061095d575061095d82612732565b5f6001600160a01b038216156120125761200d6001600160a01b038316306126c2565b61095d565b4792915050565b6109d582825f61281f565b638b78c6d81954331461160c576382b429005f526004601cfd5b6109d58282600161281f565b638b78c6d81954331461099857638b78c6d8600c52335f52806020600c205416610998576382b429005f526004601cfd5b6001600160a01b0316638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f8360800151858151811061210e5761210e612e3c565b6020908102919091018101516001600160a01b0381165f9081526002835260408082205460039094528120549193508185612149888661370d565b6121539190613724565b61215d9190612e29565b905061216981836136fa565b6001600160a01b0385165f8181526003602090815260408083209490945583517f38d52e0f000000000000000000000000000000000000000000000000000000008152935191936338d52e0f92600480830193928290030181865afa1580156121d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121f8919061375c565b60e08901516001600160a01b0382165f908152600460205260408120805493945091928592919061222a908490612e29565b90915550505f839003612269576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8461227484866136fa565b0361229f576001600160a01b0386165f90815260026020908152604080832083905560039091528120555b806001600160a01b03168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b4866040516122dc91815260200190565b60405180910390a46122ef8282856122fc565b5050505050505050505050565b3068929eee149b4bd21268540361231a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b038216612380576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301528316602482015260448101829052606401610c53565b61238983610963565b8111156123e4578261239a84610963565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610c53565b6001600160a01b038316612401576123fc8282612876565b612415565b6124156001600160a01b038416838361288f565b604080516001600160a01b038481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd21268540361248a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b0384166124f0576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380871660048301528516602482015260448101839052606401610c53565b6124fa8584611a1e565b821115612556578461250c8685611a1e565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101839052606401610c53565b6001600160a01b0385165f908152600660209081526040808320868452909152812080548492906125889084906136fa565b90915550506040517ff242432a0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063f242432a906125da903090889088908890889060040161355e565b5f604051808303815f87803b1580156125f1575f80fd5b505af1158015612603573d5f803e3d5ffd5b5050604080516001600160a01b03888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f5114166126b457803d873b1517106126b457637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e0000000000000000000000000000000000000000000000000000000014806127c457507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061281057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061095d575061095d826128e2565b638b78c6d8600c52825f526020600c20805483811783612840575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109d55763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f5114166128d857803d853b1517106128d8576390b8ec185f526004601cfd5b505f603452505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd700000000000000000000000000000000000000000000000000000000148061095d575061095d825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061095d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461095d565b5f602082840312156129d8575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611aa4575f80fd5b6001600160a01b0381168114610998575f80fd5b5f60208284031215612a2b575f80fd5b8135611aa481612a07565b5f60208284031215612a46575f80fd5b5035919050565b5f8083601f840112612a5d575f80fd5b50813567ffffffffffffffff811115612a74575f80fd5b602083019150836020828501011115612a8b575f80fd5b9250929050565b5f805f805f60808688031215612aa6575f80fd5b8535612ab181612a07565b9450602086013567ffffffffffffffff811115612acc575f80fd5b612ad888828901612a4d565b9699909850959660408101359660609091013595509350505050565b5f8060408385031215612b05575f80fd5b8235612b1081612a07565b946020939093013593505050565b5f8083601f840112612b2e575f80fd5b50813567ffffffffffffffff811115612b45575f80fd5b6020830191508360208260051b8501011115612a8b575f80fd5b5f805f8060408587031215612b72575f80fd5b843567ffffffffffffffff811115612b88575f80fd5b612b9487828801612b1e565b909550935050602085013567ffffffffffffffff811115612bb3575f80fd5b612bbf87828801612b1e565b95989497509550505050565b5f8060208385031215612bdc575f80fd5b823567ffffffffffffffff811115612bf2575f80fd5b612bfe85828601612a4d565b90969095509350505050565b5f8060408385031215612c1b575f80fd5b50508035926020909101359150565b5f8060208385031215612c3b575f80fd5b823567ffffffffffffffff811115612c51575f80fd5b612bfe85828601612b1e565b5f805f805f60808688031215612c71575f80fd5b8535612c7c81612a07565b94506020860135935060408601359250606086013567ffffffffffffffff811115612ca5575f80fd5b612cb188828901612a4d565b969995985093965092949392505050565b5f805f805f805f8060a0898b031215612cd9575f80fd5b8835612ce481612a07565b97506020890135612cf481612a07565b9650604089013567ffffffffffffffff811115612d0f575f80fd5b612d1b8b828c01612b1e565b909750955050606089013567ffffffffffffffff811115612d3a575f80fd5b612d468b828c01612b1e565b909550935050608089013567ffffffffffffffff811115612d65575f80fd5b612d718b828c01612a4d565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612d9a575f80fd5b8635612da581612a07565b95506020870135612db581612a07565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dde575f80fd5b612dea89828a01612a4d565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561095d5761095d612dfc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8015158114610998575f80fd5b5f60208284031215612e86575f80fd5b8135611aa481612e69565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715612ee157612ee1612e91565b60405290565b604051610100810167ffffffffffffffff81118282101715612ee157612ee1612e91565b6040516060810167ffffffffffffffff81118282101715612ee157612ee1612e91565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f7557612f75612e91565b604052919050565b5f67ffffffffffffffff821115612f9657612f96612e91565b5060051b60200190565b5f82601f830112612faf575f80fd5b8135612fc2612fbd82612f7d565b612f2e565b8082825260208201915060208360051b860101925085831115612fe3575f80fd5b602085015b83811015613000578035835260209283019201612fe8565b5095945050505050565b5f6020828403121561301a575f80fd5b813567ffffffffffffffff811115613030575f80fd5b820160808185031215613041575f80fd5b613049612ebe565b813561305481612a07565b8152602082013567ffffffffffffffff81111561306f575f80fd5b8201601f8101861361307f575f80fd5b803561308d612fbd82612f7d565b8082825260208201915060208360051b8501019250888311156130ae575f80fd5b6020840193505b828410156130d95783356130c881612a07565b8252602093840193909101906130b5565b6020850152505050604082013567ffffffffffffffff8111156130fa575f80fd5b61310686828501612fa0565b604083015250606091820135918101919091529392505050565b805161312b81612a07565b919050565b5f82601f83011261313f575f80fd5b815161314d612fbd82612f7d565b8082825260208201915060208360051b86010192508583111561316e575f80fd5b602085015b8381101561300057805161318681612a07565b835260209283019201613173565b805167ffffffffffffffff8116811461312b575f80fd5b5f602082840312156131bb575f80fd5b815167ffffffffffffffff8111156131d1575f80fd5b820161010081850312156131e3575f80fd5b6131eb612ee7565b6131f482613120565b815261320260208301613120565b602082015261321360408301613120565b604082015261322460608301613120565b6060820152608082015167ffffffffffffffff811115613242575f80fd5b61324e86828501613130565b60808301525061326060a08301613194565b60a082015260c0828101519082015261327b60e08301613120565b60e0820152949350505050565b5f60208284031215613298575f80fd5b8151611aa481612e69565b5f602082840312156132b3575f80fd5b5051919050565b5f67ffffffffffffffff8211156132d3576132d3612e91565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f6020828403121561330f575f80fd5b813567ffffffffffffffff811115613325575f80fd5b820160808185031215613336575f80fd5b61333e612ebe565b81356003811061334c575f80fd5b8152602082013561335c81612a07565b6020820152604082013561336f81612a07565b6040820152606082013567ffffffffffffffff81111561338d575f80fd5b80830192505084601f8301126133a1575f80fd5b81356133af612fbd826132ba565b8181528660208386010111156133c3575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015613423575f80fd5b506040516020810167ffffffffffffffff8111828210171561344757613447612e91565b6040529151825250919050565b5f60208284031215613464575f80fd5b815167ffffffffffffffff81111561347a575f80fd5b82016060818503121561348b575f80fd5b613493612f0b565b8151815260208083015190820152604082015167ffffffffffffffff8111156134ba575f80fd5b80830192505084601f8301126134ce575f80fd5b81516134dc612fbd826132ba565b8181528660208386010111156134f0575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015282606082015260a060808201525f61359a60a0830184613512565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135d8575f80fd5b83018035915067ffffffffffffffff8211156135f2575f80fd5b602001915036819003821315612a8b575f80fd5b85815284602082015260806040820152826080820152828460a08301375f60a084830101525f60a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011683010190506001600160a01b03831660608301529695505050505050565b602081526001600160a01b0382511660208201525f602083015160408084015261369f6060840182613512565b949350505050565b606081525f6136b96060830186613512565b60208301949094525060400152919050565b5f80604083850312156136dc575f80fd5b825160208401519092506136ef81612a07565b809150509250929050565b8082018082111561095d5761095d612dfc565b808202811582820484141761095d5761095d612dfc565b5f82613757577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f6020828403121561376c575f80fd5b8151611aa481612a0756fea26469706673582212200b6f5a040107fb8df801dbaa64832fd749590bcef38bea11abeca63cbff5197064736f6c634300081a0033",O1="0x6080604052600436106102ea575f3560e01c806375b238fc11610183578063dcc21361116100d5578063f8724aba11610089578063fe56e23211610063578063fe56e232146108e4578063fe9fbb8014610903578063fee81cf414610922576102f1565b8063f8724aba14610887578063f9a802c3146108a6578063fa4ca9b1146108c5576102f1565b8063f04e283e116100ba578063f04e283e1461081c578063f23a6e611461082f578063f2fde38b14610874576102f1565b8063dcc21361146107e9578063ec87621c14610808576102f1565b8063b300579311610137578063c6004a3a11610111578063c6004a3a14610774578063d2514e841461079f578063d8c12d22146107be576102f1565b8063b3005793146106ef578063bc197c811461070e578063be4994f814610755576102f1565b80638da5cb5b116101685780638da5cb5b14610690578063929470eb146106bb578063a6f7f5d6146106da576102f1565b806375b238fc1461063b578063774c33ab1461064f576102f1565b8063439fab911161023c578063514e62fc116101f05780635aef467a116101ca5780635aef467a1461060157806361400c9914610614578063715018a614610633576102f1565b8063514e62fc1461059057806354d1f13d146105c5578063578bcf35146105cd576102f1565b8063451cc19111610221578063451cc1911461053d578063474f5a441461055e5780634a4ee7b11461057d576102f1565b8063439fab91146104ff57806343cc96e11461051e576102f1565b80631c10893f1161029e57806328d6183b1161027857806328d6183b146104505780632de94807146104af5780634359d28a146104e0576102f1565b80631c10893f146104005780631cd64df4146104135780632569296214610448576102f1565b806314135ce0116102cf57806314135ce014610384578063183a4f6e146103af578063185832a3146103c4576102f1565b806301ffc9a71461032357806310098ad514610357576102f1565b366102f157005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561032e575f80fd5b5061034261033d3660046129c8565b610953565b60405190151581526020015b60405180910390f35b348015610362575f80fd5b50610376610371366004612a1b565b610963565b60405190815260200161034e565b34801561038f575f80fd5b5061037661039e366004612a1b565b60046020525f908152604090205481565b6103c26103bd366004612a36565b61098e565b005b3480156103cf575f80fd5b506103e36103de366004612a92565b61099b565b604080519283526001600160a01b0390911660208301520161034e565b6103c261040e366004612af4565b6109c3565b34801561041e575f80fd5b5061034261042d366004612af4565b638b78c6d8600c9081525f9290925260209091205481161490565b6103c26109d9565b34801561045b575f80fd5b507fde98bbf0000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161034e565b3480156104ba575f80fd5b506103766104c9366004612a1b565b638b78c6d8600c9081525f91909152602090205490565b3480156104eb575f80fd5b506103c26104fa366004612b5f565b610a26565b34801561050a575f80fd5b506103c2610519366004612bcb565b610b20565b348015610529575f80fd5b506103c2610538366004612c0a565b610d2a565b348015610548575f80fd5b50610376610557366004612bcb565b5f92915050565b348015610569575f80fd5b50610376610578366004612bcb565b6110b3565b6103c261058b366004612af4565b611269565b34801561059b575f80fd5b506103426105aa366004612af4565b638b78c6d8600c9081525f9290925260209091205416151590565b6103c261127b565b3480156105d8575f80fd5b506103766105e7366004612a1b565b6001600160a01b03165f9081526005602052604090205490565b61034261060f366004612bcb565b6112b4565b34801561061f575f80fd5b5061034261062e366004612c2a565b6115b4565b6103c26115fb565b348015610646575f80fd5b50610376600281565b34801561065a575f80fd5b50610376610669366004612af4565b6001600160a01b03919091165f908152600660209081526040808320938352929052205490565b34801561069b575f80fd5b50638b78c6d819546040516001600160a01b03909116815260200161034e565b3480156106c6575f80fd5b506103426106d5366004612c5d565b61160e565b3480156106e5575f80fd5b5061037660015481565b3480156106fa575f80fd5b506103e3610709366004612a92565b6116d4565b348015610719575f80fd5b5061047e610728366004612cc2565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610760575f80fd5b506103c261076f366004612b5f565b611842565b34801561077f575f80fd5b5061037661078e366004612a1b565b60036020525f908152604090205481565b3480156107aa575f80fd5b506103766107b9366004612a1b565b6118e0565b3480156107c9575f80fd5b506103766107d8366004612a1b565b60026020525f908152604090205481565b3480156107f4575f80fd5b506103c2610803366004612b5f565b611920565b348015610813575f80fd5b50610376600181565b6103c261082a366004612a1b565b6119be565b34801561083a575f80fd5b5061047e610849366004612d85565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6103c2610882366004612a1b565b6119f8565b348015610892575f80fd5b506103766108a1366004612af4565b611a1e565b3480156108b1575f80fd5b506103766108c0366004612af4565b611aab565b3480156108d0575f80fd5b506103426108df366004612bcb565b611b55565b3480156108ef575f80fd5b506103c26108fe366004612a36565b611e9d565b34801561090e575f80fd5b5061034261091d366004612a1b565b611f50565b34801561092d575f80fd5b5061037661093c366004612a1b565b63389a75e1600c9081525f91909152602090205490565b5f61095d82611f95565b92915050565b6001600160a01b0381165f9081526004602052604081205461098483611fea565b61095d9190612e29565b6109983382612019565b50565b5f806109aa87878787876116d4565b90925090506109b98484610d2a565b9550959350505050565b6109cb612024565b6109d5828261203e565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610a318161204a565b838214610a6a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18575f848483818110610a8757610a87612e3c565b9050602002016020810190610a9c9190612e76565b9050801515600103610ade57610ad9878784818110610abd57610abd612e3c565b9050602002016020810190610ad29190612a1b565b600161203e565b610b0f565b610b0f878784818110610af357610af3612e3c565b9050602002016020810190610b089190612a1b565b6001612019565b50600101610a6c565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610b715760018160011c14303b10610b685763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610b7f8385018561300a565b9050610b8d815f015161207b565b5f5b816020015151811015610be857610be082602001518281518110610bb557610bb5612e3c565b602002602001015183604001518381518110610bd357610bd3612e3c565b60200260200101516120b6565b600101610b8f565b508060200151515f03610c5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6e6f20636f726520636f6e74726163742073657400000000000000000000000060448201526064015b60405180910390fd5b80602001515f81518110610c7257610c72612e3c565b6020908102919091018101515f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055606082015160018190556040519081527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd0978910160405180910390a1508015610d25576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80546040517f13c8e2de000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b03909116906313c8e2de906024015f60405180830381865afa158015610d89573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610dce91908101906131ab565b90505f81608001518381518110610de757610de7612e3c565b60209081029190910101516040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f7cc1d5bb0000000000000000000000000000000000000000000000000000000060048201529091506001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610e70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e949190613288565b15610f6e575f816001600160a01b031663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb91906132a3565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610f3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5f91906132a3565b9050610b1886868685856120f7565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f903181110000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610fe9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100d9190613288565b156102f1575f816001600160a01b031663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611050573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107491906132a3565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3b573d5f803e3d5ffd5b5f60026110bf8161204a565b5f6110cc848601866132ff565b90505f80825160028111156110e3576110e36133e5565b148061110157506001825160028111156110ff576110ff6133e5565b145b15611158575f826060015180602001905181019061111f9190613412565b602084015160408501518251929350611150921561113e5783516122fc565b61114b8660200151610963565b6122fc565b51905061125e565b60028251600281111561116d5761116d6133e5565b03611255575f826060015180602001905181019061118b9190613454565b905061124a83602001518460400151835f015184602001515f146111b3578460200151611240565b602087015185516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091526001600160a01b039091169062fdd58e90604401602060405180830381865afa15801561121c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061124091906132a3565b856040015161246c565b60200151905061125e565b92506112629050565b9250505b5092915050565b611271612024565b6109d58282612019565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f806112c2838501856132ff565b90505f815160028111156112d8576112d86133e5565b03611351575f81606001518060200190518101906112f69190613412565b8051909150341461134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b506115aa565b600181516002811115611366576113666133e5565b03611413575f81606001518060200190518101906113849190613412565b6040830151815160208501519293506113a9926001600160a01b031691903090612660565b805160208301516113c3906001600160a01b0316306126c2565b101561134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b600281516002811115611428576114286133e5565b036115a1575f81606001518060200190518101906114469190613454565b905081602001516001600160a01b031663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161148f95949392919061355e565b5f604051808303815f87803b1580156114a6575f80fd5b505af11580156114b8573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192506001600160a01b03169062fdd58e90604401602060405180830381865afa15801561152a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154e91906132a3565b101561134b57602080830151908201516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b5f91505061095d565b5060019392505050565b5f805b828110156115aa576115e68484838181106115d4576115d4612e3c565b90506020028101906108df91906135a5565b6115f3575f91505061095d565b6001016115b7565b611603612024565b61160c5f6126f5565b565b5f61161833611f50565b61164e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1fa2acdc0000000000000000000000000000000000000000000000000000000081526001600160a01b03871690631fa2acdc9061169b9088908890889088903090600401613606565b5f604051808303815f87803b1580156116b2575f80fd5b505af11580156116c4573d5f803e3d5ffd5b5060019998505050505050505050565b5f806116df33611f50565b611715576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060400160405280306001600160a01b0316815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a9290915081906001600160a01b0384169063dd98558c90611793908790602001613672565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b81526004016117c2939291906136a7565b60408051808303815f875af11580156117dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180191906136cb565b6001600160a01b0381165f9081526005602052604081208054939550919350849261182d908490612e29565b90915550919b909a5098505050505050505050565b600261184d8161204a565b838214611886576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576118d88686838181106118a5576118a5612e3c565b90506020020160208101906118ba9190612a1b565b8585848181106118cc576118cc612e3c565b9050602002013561203e565b600101611888565b6001600160a01b0381165f90815260046020908152604080832054600590925282205461190c84610963565b61191691906136fa565b61095d91906136fa565b600261192b8161204a565b838214611964576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576119b686868381811061198357611983612e3c565b90506020020160208101906119989190612a1b565b8585848181106119aa576119aa612e3c565b90506020020135612019565b600101611966565b6119c6612024565b63389a75e1600c52805f526020600c2080544211156119ec57636f5e88185f526004601cfd5b5f9055610998816126f5565b611a00612024565b8060601b611a1557637448fbae5f526004601cfd5b610998816126f5565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f906001600160a01b0384169062fdd58e90604401602060405180830381865afa158015611a80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa491906132a3565b9392505050565b6001600160a01b0382165f8181526006602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa158015611b27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b4b91906132a3565b611aa491906136fa565b5f611b5f33611f50565b611b95576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611ba2838501856132ff565b9050600181516002811115611bb957611bb96133e5565b1480611bd657505f81516002811115611bd457611bd46133e5565b145b15611d4f575f8160600151806020019051810190611bf49190613412565b90505f612710600154835f0151611c0b919061370d565b611c159190613724565b90505f611c258460200151610963565b90508082845f0151611c3791906136fa565b1115611c9c57602084015183518290611c519085906136fa565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b03909316600484015260248301919091526044820152606401610c53565b6040808501516001600160a01b03165f90815260026020529081208054849290611cc79084906136fa565b90915550506020808501516001600160a01b03165f9081526004909152604081208054849290611cf89084906136fa565b909155505082516020808601516001600160a01b03165f9081526005909152604081208054909190611d2b9084906136fa565b9091555050602084015160408501518451611d479291906122fc565b5050506115aa565b600281516002811115611d6457611d646133e5565b036115a1575f8160600151806020019051810190611d829190613454565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f916001600160a01b039091169062fdd58e90604401602060405180830381865afa158015611df0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e1491906132a3565b90508082602001511115611e7657602080840151908301516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482018390526044820152606401610c53565b611e9683602001518460400151845f01518560200151866040015161246c565b50506115aa565b6002611ea88161204a565b612710821115611f14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4665652063616e6e6f74206578636565642031303025000000000000000000006044820152606401610c53565b60018290556040518281527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09789060200160405180910390a15050565b5f816001600160a01b0316611f68638b78c6d8195490565b6001600160a01b0316148061095d5750638b78c6d8600c9081525f8390526020902054600316151561095d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fde98bbf000000000000000000000000000000000000000000000000000000000148061095d575061095d82612732565b5f6001600160a01b038216156120125761200d6001600160a01b038316306126c2565b61095d565b4792915050565b6109d582825f61281f565b638b78c6d81954331461160c576382b429005f526004601cfd5b6109d58282600161281f565b638b78c6d81954331461099857638b78c6d8600c52335f52806020600c205416610998576382b429005f526004601cfd5b6001600160a01b0316638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f8360800151858151811061210e5761210e612e3c565b6020908102919091018101516001600160a01b0381165f9081526002835260408082205460039094528120549193508185612149888661370d565b6121539190613724565b61215d9190612e29565b905061216981836136fa565b6001600160a01b0385165f8181526003602090815260408083209490945583517f38d52e0f000000000000000000000000000000000000000000000000000000008152935191936338d52e0f92600480830193928290030181865afa1580156121d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121f8919061375c565b60e08901516001600160a01b0382165f908152600460205260408120805493945091928592919061222a908490612e29565b90915550505f839003612269576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8461227484866136fa565b0361229f576001600160a01b0386165f90815260026020908152604080832083905560039091528120555b806001600160a01b03168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b4866040516122dc91815260200190565b60405180910390a46122ef8282856122fc565b5050505050505050505050565b3068929eee149b4bd21268540361231a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b038216612380576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301528316602482015260448101829052606401610c53565b61238983610963565b8111156123e4578261239a84610963565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610c53565b6001600160a01b038316612401576123fc8282612876565b612415565b6124156001600160a01b038416838361288f565b604080516001600160a01b038481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd21268540361248a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b0384166124f0576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380871660048301528516602482015260448101839052606401610c53565b6124fa8584611a1e565b821115612556578461250c8685611a1e565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101839052606401610c53565b6001600160a01b0385165f908152600660209081526040808320868452909152812080548492906125889084906136fa565b90915550506040517ff242432a0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063f242432a906125da903090889088908890889060040161355e565b5f604051808303815f87803b1580156125f1575f80fd5b505af1158015612603573d5f803e3d5ffd5b5050604080516001600160a01b03888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f5114166126b457803d873b1517106126b457637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e0000000000000000000000000000000000000000000000000000000014806127c457507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061281057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061095d575061095d826128e2565b638b78c6d8600c52825f526020600c20805483811783612840575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109d55763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f5114166128d857803d853b1517106128d8576390b8ec185f526004601cfd5b505f603452505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd700000000000000000000000000000000000000000000000000000000148061095d575061095d825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061095d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461095d565b5f602082840312156129d8575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611aa4575f80fd5b6001600160a01b0381168114610998575f80fd5b5f60208284031215612a2b575f80fd5b8135611aa481612a07565b5f60208284031215612a46575f80fd5b5035919050565b5f8083601f840112612a5d575f80fd5b50813567ffffffffffffffff811115612a74575f80fd5b602083019150836020828501011115612a8b575f80fd5b9250929050565b5f805f805f60808688031215612aa6575f80fd5b8535612ab181612a07565b9450602086013567ffffffffffffffff811115612acc575f80fd5b612ad888828901612a4d565b9699909850959660408101359660609091013595509350505050565b5f8060408385031215612b05575f80fd5b8235612b1081612a07565b946020939093013593505050565b5f8083601f840112612b2e575f80fd5b50813567ffffffffffffffff811115612b45575f80fd5b6020830191508360208260051b8501011115612a8b575f80fd5b5f805f8060408587031215612b72575f80fd5b843567ffffffffffffffff811115612b88575f80fd5b612b9487828801612b1e565b909550935050602085013567ffffffffffffffff811115612bb3575f80fd5b612bbf87828801612b1e565b95989497509550505050565b5f8060208385031215612bdc575f80fd5b823567ffffffffffffffff811115612bf2575f80fd5b612bfe85828601612a4d565b90969095509350505050565b5f8060408385031215612c1b575f80fd5b50508035926020909101359150565b5f8060208385031215612c3b575f80fd5b823567ffffffffffffffff811115612c51575f80fd5b612bfe85828601612b1e565b5f805f805f60808688031215612c71575f80fd5b8535612c7c81612a07565b94506020860135935060408601359250606086013567ffffffffffffffff811115612ca5575f80fd5b612cb188828901612a4d565b969995985093965092949392505050565b5f805f805f805f8060a0898b031215612cd9575f80fd5b8835612ce481612a07565b97506020890135612cf481612a07565b9650604089013567ffffffffffffffff811115612d0f575f80fd5b612d1b8b828c01612b1e565b909750955050606089013567ffffffffffffffff811115612d3a575f80fd5b612d468b828c01612b1e565b909550935050608089013567ffffffffffffffff811115612d65575f80fd5b612d718b828c01612a4d565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612d9a575f80fd5b8635612da581612a07565b95506020870135612db581612a07565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dde575f80fd5b612dea89828a01612a4d565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561095d5761095d612dfc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8015158114610998575f80fd5b5f60208284031215612e86575f80fd5b8135611aa481612e69565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715612ee157612ee1612e91565b60405290565b604051610100810167ffffffffffffffff81118282101715612ee157612ee1612e91565b6040516060810167ffffffffffffffff81118282101715612ee157612ee1612e91565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f7557612f75612e91565b604052919050565b5f67ffffffffffffffff821115612f9657612f96612e91565b5060051b60200190565b5f82601f830112612faf575f80fd5b8135612fc2612fbd82612f7d565b612f2e565b8082825260208201915060208360051b860101925085831115612fe3575f80fd5b602085015b83811015613000578035835260209283019201612fe8565b5095945050505050565b5f6020828403121561301a575f80fd5b813567ffffffffffffffff811115613030575f80fd5b820160808185031215613041575f80fd5b613049612ebe565b813561305481612a07565b8152602082013567ffffffffffffffff81111561306f575f80fd5b8201601f8101861361307f575f80fd5b803561308d612fbd82612f7d565b8082825260208201915060208360051b8501019250888311156130ae575f80fd5b6020840193505b828410156130d95783356130c881612a07565b8252602093840193909101906130b5565b6020850152505050604082013567ffffffffffffffff8111156130fa575f80fd5b61310686828501612fa0565b604083015250606091820135918101919091529392505050565b805161312b81612a07565b919050565b5f82601f83011261313f575f80fd5b815161314d612fbd82612f7d565b8082825260208201915060208360051b86010192508583111561316e575f80fd5b602085015b8381101561300057805161318681612a07565b835260209283019201613173565b805167ffffffffffffffff8116811461312b575f80fd5b5f602082840312156131bb575f80fd5b815167ffffffffffffffff8111156131d1575f80fd5b820161010081850312156131e3575f80fd5b6131eb612ee7565b6131f482613120565b815261320260208301613120565b602082015261321360408301613120565b604082015261322460608301613120565b6060820152608082015167ffffffffffffffff811115613242575f80fd5b61324e86828501613130565b60808301525061326060a08301613194565b60a082015260c0828101519082015261327b60e08301613120565b60e0820152949350505050565b5f60208284031215613298575f80fd5b8151611aa481612e69565b5f602082840312156132b3575f80fd5b5051919050565b5f67ffffffffffffffff8211156132d3576132d3612e91565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f6020828403121561330f575f80fd5b813567ffffffffffffffff811115613325575f80fd5b820160808185031215613336575f80fd5b61333e612ebe565b81356003811061334c575f80fd5b8152602082013561335c81612a07565b6020820152604082013561336f81612a07565b6040820152606082013567ffffffffffffffff81111561338d575f80fd5b80830192505084601f8301126133a1575f80fd5b81356133af612fbd826132ba565b8181528660208386010111156133c3575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015613423575f80fd5b506040516020810167ffffffffffffffff8111828210171561344757613447612e91565b6040529151825250919050565b5f60208284031215613464575f80fd5b815167ffffffffffffffff81111561347a575f80fd5b82016060818503121561348b575f80fd5b613493612f0b565b8151815260208083015190820152604082015167ffffffffffffffff8111156134ba575f80fd5b80830192505084601f8301126134ce575f80fd5b81516134dc612fbd826132ba565b8181528660208386010111156134f0575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015282606082015260a060808201525f61359a60a0830184613512565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135d8575f80fd5b83018035915067ffffffffffffffff8211156135f2575f80fd5b602001915036819003821315612a8b575f80fd5b85815284602082015260806040820152826080820152828460a08301375f60a084830101525f60a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011683010190506001600160a01b03831660608301529695505050505050565b602081526001600160a01b0382511660208201525f602083015160408084015261369f6060840182613512565b949350505050565b606081525f6136b96060830186613512565b60208301949094525060400152919050565b5f80604083850312156136dc575f80fd5b825160208401519092506136ef81612a07565b809150509250929050565b8082018082111561095d5761095d612dfc565b808202811582820484141761095d5761095d612dfc565b5f82613757577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f6020828403121561376c575f80fd5b8151611aa481612a0756fea26469706673582212200b6f5a040107fb8df801dbaa64832fd749590bcef38bea11abeca63cbff5197064736f6c634300081a0033",C1={},_1={},$0={_format:I1,contractName:x1,sourceName:A1,abi:E1,bytecode:R1,deployedBytecode:O1,linkReferences:C1,deployedLinkReferences:_1},z1="hh-sol-artifact-1",B1="VestingBudget",N1="contracts/budgets/VestingBudget.sol",P1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"FnSelectorNotRecognized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"cliff",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"duration",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[],name:"end",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"start",outputs:[{internalType:"uint64",name:"",type:"uint64"}],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:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],$1="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6121f1806100895f395ff3fe608060405260043610610237575f3560e01c8063578bcf3511610137578063d2514e84116100af578063f04e283e1161007e578063fa4ca9b111610063578063fa4ca9b1146106c0578063fe9fbb80146106df578063fee81cf4146106fe5761023e565b8063f04e283e1461069a578063f2fde38b146106ad5761023e565b8063d2514e8414610634578063dcc2136114610653578063ec87621c14610672578063efbe1c1c146106865761023e565b806375b238fc11610106578063b3005793116100eb578063b3005793146105ad578063be4994f8146105f6578063be9a6555146106155761023e565b806375b238fc146105615780638da5cb5b146105755761023e565b8063578bcf35146104e65780635aef467a1461052757806361400c991461053a578063715018a6146105595761023e565b806328d6183b116101ca578063451cc191116101995780634a4ee7b11161017e5780634a4ee7b114610496578063514e62fc146104a957806354d1f13d146104de5761023e565b8063451cc19114610456578063474f5a44146104775761023e565b806328d6183b146103ad5780632de94807146103e75780634359d28a14610418578063439fab91146104375761023e565b8063183a4f6e11610206578063183a4f6e146103485780631c10893f1461035d5780631cd64df41461037057806325692962146103a55761023e565b806301ffc9a7146102705780630fb5a6b4146102a457806310098ad5146102e857806313d033c0146103155761023e565b3661023e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561027b575f80fd5b5061028f61028a36600461192e565b61072f565b60405190151581526020015b60405180910390f35b3480156102af575f80fd5b505f546102cf9068010000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161029b565b3480156102f3575f80fd5b5061030761030236600461198e565b61078a565b60405190815260200161029b565b348015610320575f80fd5b505f546102cf90700100000000000000000000000000000000900467ffffffffffffffff1681565b61035b6103563660046119a9565b6107c3565b005b61035b61036b3660046119c0565b6107d0565b34801561037b575f80fd5b5061028f61038a3660046119c0565b638b78c6d8600c9081525f9290925260209091205481161490565b61035b6107e6565b3480156103b8575f80fd5b506040517f64683da100000000000000000000000000000000000000000000000000000000815260200161029b565b3480156103f2575f80fd5b5061030761040136600461198e565b638b78c6d8600c9081525f91909152602090205490565b348015610423575f80fd5b5061035b610432366004611a32565b610833565b348015610442575f80fd5b5061035b610451366004611adc565b61092d565b348015610461575f80fd5b50610307610470366004611adc565b5f92915050565b348015610482575f80fd5b50610307610491366004611adc565b610aa9565b61035b6104a43660046119c0565b610b5c565b3480156104b4575f80fd5b5061028f6104c33660046119c0565b638b78c6d8600c9081525f9290925260209091205416151590565b61035b610b6e565b3480156104f1575f80fd5b5061030761050036600461198e565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b61028f610535366004611adc565b610ba7565b348015610545575f80fd5b5061028f610554366004611b1b565b610d52565b61035b610d99565b34801561056c575f80fd5b50610307600281565b348015610580575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029b565b3480156105b8575f80fd5b506105cc6105c7366004611b4e565b610dac565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161029b565b348015610601575f80fd5b5061035b610610366004611a32565b610efb565b348015610620575f80fd5b505f546102cf9067ffffffffffffffff1681565b34801561063f575f80fd5b5061030761064e36600461198e565b610f99565b34801561065e575f80fd5b5061035b61066d366004611a32565b611018565b34801561067d575f80fd5b50610307600181565b348015610691575f80fd5b506103076110b6565b61035b6106a836600461198e565b6110ea565b61035b6106bb36600461198e565b611124565b3480156106cb575f80fd5b5061028f6106da366004611adc565b61114a565b3480156106ea575f80fd5b5061028f6106f936600461198e565b611201565b348015610709575f80fd5b5061030761071836600461198e565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f64683da1000000000000000000000000000000000000000000000000000000001480610784575061078482611260565b92915050565b73ffffffffffffffffffffffffffffffffffffffff81165f908152600160205260408120546107b983426112b5565b6107849190611bdd565b6107cd3382611336565b50565b6107d8611341565b6107e2828261135b565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261083e81611367565b838214610877576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925575f84848381811061089457610894611bf0565b90506020020160208101906108a99190611c1d565b90508015156001036108eb576108e68787848181106108ca576108ca611bf0565b90506020020160208101906108df919061198e565b600161135b565b61091c565b61091c87878481811061090057610900611bf0565b9050602002016020810190610915919061198e565b6001611336565b50600101610879565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561097e5760018160011c14303b106109755763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61098c83850185611d20565b60408101515f80546060840151608085015167ffffffffffffffff908116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909416919095161791909117169190911790558051909150610a2e90611398565b5f5b816020015151811015610a6d57610a6582602001518281518110610a5657610a56611bf0565b602002602001015160016113e0565b600101610a30565b50508015610aa4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f610ab2611341565b5f610abf83850185611e4d565b90505f8082516002811115610ad657610ad6611f70565b1480610af45750600182516002811115610af257610af2611f70565b145b15610b4b575f8260600151806020019051810190610b129190611f9d565b805190915015610b23578051610b30565b610b30836020015161078a565b9150610b458360200151846040015184611421565b50610b54565b91506107849050565b949350505050565b610b64611341565b6107e28282611336565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610bb583850185611e4d565b90505f81516002811115610bcb57610bcb611f70565b03610c56575f8160600151806020019051810190610be99190611f9d565b80519091503414610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b50610d48565b600181516002811115610c6b57610c6b611f70565b03610d3f575f8160600151806020019051810190610c899190611f9d565b604083015181516020850151929350610cbb9273ffffffffffffffffffffffffffffffffffffffff1691903090611618565b80516020830151610ce29073ffffffffffffffffffffffffffffffffffffffff163061167a565b1015610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610c47565b5f915050610784565b5060019392505050565b5f805b82811015610d4857610d84848483818110610d7257610d72611bf0565b90506020028101906106da9190611fdf565b610d91575f915050610784565b600101610d55565b610da1611341565b610daa5f6116ad565b565b5f80610db733611201565b610ded576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505091525060405190915073ffffffffffffffffffffffffffffffffffffffff89169063dd98558c90610e7e90849060200161208c565b60405160208183030381529060405287876040518463ffffffff1660e01b8152600401610ead939291906120c6565b60408051808303815f875af1158015610ec8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eec91906120ea565b92509250509550959350505050565b6002610f0681611367565b838214610f3f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561092557610f91868683818110610f5e57610f5e611bf0565b9050602002016020810190610f73919061198e565b858584818110610f8557610f85611bf0565b9050602002013561135b565b600101610f41565b5f8073ffffffffffffffffffffffffffffffffffffffff831615610fdc57610fd773ffffffffffffffffffffffffffffffffffffffff84163061167a565b610fde565b475b73ffffffffffffffffffffffffffffffffffffffff84165f90815260016020526040902054909150611011908290612119565b9392505050565b600261102381611367565b83821461105c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925576110ae86868381811061107b5761107b611bf0565b9050602002016020810190611090919061198e565b8585848181106110a2576110a2611bf0565b90506020020135611336565b60010161105e565b5f80546110db9067ffffffffffffffff6801000000000000000082048116911661212c565b67ffffffffffffffff16905090565b6110f2611341565b63389a75e1600c52805f526020600c20805442111561111857636f5e88185f526004601cfd5b5f90556107cd816116ad565b61112c611341565b8060601b61114157637448fbae5f526004601cfd5b6107cd816116ad565b5f61115433611201565b61118a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61119783850185611e4d565b90506001815160028111156111ae576111ae611f70565b14806111cb57505f815160028111156111c9576111c9611f70565b145b15610d3f575f81606001518060200190518101906111e99190611f9d565b9050610c5082602001518360400151835f0151611421565b5f8173ffffffffffffffffffffffffffffffffffffffff16611226638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107845750638b78c6d8600c9081525f83905260209020546003161515610784565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806107845750610784826116f7565b5f8073ffffffffffffffffffffffffffffffffffffffff8416156112f8576112f373ffffffffffffffffffffffffffffffffffffffff85163061167a565b6112fa565b475b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020526040902054909150610b54906113309083612119565b8461178d565b6107e282825f61186b565b638b78c6d819543314610daa576382b429005f526004601cfd5b6107e28282600161186b565b638b78c6d8195433146107cd57638b78c6d8600c52335f52806020600c2054166107cd576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361143f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff82166114bf576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610c47565b6114c88361078a565b81111561153057826114d98461078a565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610c47565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208054839290611564908490612119565b909155505073ffffffffffffffffffffffffffffffffffffffff83166115935761158e82826118c2565b6115b4565b6115b473ffffffffffffffffffffffffffffffffffffffff841683836118db565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f51141661166c57803d873b15171061166c57637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061078457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610784565b5f80546117ba9067ffffffffffffffff70010000000000000000000000000000000082048116911661212c565b67ffffffffffffffff168267ffffffffffffffff1610156117dc57505f610784565b5f546118009067ffffffffffffffff6801000000000000000082048116911661212c565b67ffffffffffffffff168267ffffffffffffffff1610611821575081610784565b5f5467ffffffffffffffff68010000000000000000820481169161184691168461214c565b61185a9067ffffffffffffffff168561216c565b6118649190612183565b9050610784565b638b78c6d8600c52825f526020600c2080548381178361188c575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16107e25763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f51141661192457803d853b151710611924576390b8ec185f526004601cfd5b505f603452505050565b5f6020828403121561193e575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611011575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146107cd575f80fd5b5f6020828403121561199e575f80fd5b81356110118161196d565b5f602082840312156119b9575f80fd5b5035919050565b5f80604083850312156119d1575f80fd5b82356119dc8161196d565b946020939093013593505050565b5f8083601f8401126119fa575f80fd5b50813567ffffffffffffffff811115611a11575f80fd5b6020830191508360208260051b8501011115611a2b575f80fd5b9250929050565b5f805f8060408587031215611a45575f80fd5b843567ffffffffffffffff811115611a5b575f80fd5b611a67878288016119ea565b909550935050602085013567ffffffffffffffff811115611a86575f80fd5b611a92878288016119ea565b95989497509550505050565b5f8083601f840112611aae575f80fd5b50813567ffffffffffffffff811115611ac5575f80fd5b602083019150836020828501011115611a2b575f80fd5b5f8060208385031215611aed575f80fd5b823567ffffffffffffffff811115611b03575f80fd5b611b0f85828601611a9e565b90969095509350505050565b5f8060208385031215611b2c575f80fd5b823567ffffffffffffffff811115611b42575f80fd5b611b0f858286016119ea565b5f805f805f60808688031215611b62575f80fd5b8535611b6d8161196d565b9450602086013567ffffffffffffffff811115611b88575f80fd5b611b9488828901611a9e565b9699909850959660408101359660609091013595509350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561078457610784611bb0565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611c2d575f80fd5b81358015158114611011575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611c8c57611c8c611c3c565b60405290565b6040516080810167ffffffffffffffff81118282101715611c8c57611c8c611c3c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cfc57611cfc611c3c565b604052919050565b803567ffffffffffffffff81168114611d1b575f80fd5b919050565b5f60208284031215611d30575f80fd5b813567ffffffffffffffff811115611d46575f80fd5b820160a08185031215611d57575f80fd5b611d5f611c69565b8135611d6a8161196d565b8152602082013567ffffffffffffffff811115611d85575f80fd5b8201601f81018613611d95575f80fd5b803567ffffffffffffffff811115611daf57611daf611c3c565b8060051b611dbf60208201611cb5565b91825260208184018101929081019089841115611dda575f80fd5b6020850194505b83851015611e085784359250611df68361196d565b82825260209485019490910190611de1565b602086015250611e1e9250505060408301611d04565b6040820152611e2f60608301611d04565b6060820152611e4060808301611d04565b6080820152949350505050565b5f60208284031215611e5d575f80fd5b813567ffffffffffffffff811115611e73575f80fd5b820160808185031215611e84575f80fd5b611e8c611c92565b813560038110611e9a575f80fd5b81526020820135611eaa8161196d565b60208201526040820135611ebd8161196d565b6040820152606082013567ffffffffffffffff811115611edb575f80fd5b80830192505084601f830112611eef575f80fd5b813567ffffffffffffffff811115611f0957611f09611c3c565b611f3a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611cb5565b818152866020838601011115611f4e575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015611fae575f80fd5b506040516020810167ffffffffffffffff81118282101715611fd257611fd2611c3c565b6040529151825250919050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612012575f80fd5b83018035915067ffffffffffffffff82111561202c575f80fd5b602001915036819003821315611a2b575f80fd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152610b546060840182612040565b606081525f6120d86060830186612040565b60208301949094525060400152919050565b5f80604083850312156120fb575f80fd5b8251602084015190925061210e8161196d565b809150509250929050565b8082018082111561078457610784611bb0565b67ffffffffffffffff818116838216019081111561078457610784611bb0565b67ffffffffffffffff828116828216039081111561078457610784611bb0565b808202811582820484141761078457610784611bb0565b5f826121b6577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea26469706673582212201f1670255558fabbcd29da6d005ba60d64640ef7602785f8cdae9947d6e3168464736f6c634300081a0033",L1="0x608060405260043610610237575f3560e01c8063578bcf3511610137578063d2514e84116100af578063f04e283e1161007e578063fa4ca9b111610063578063fa4ca9b1146106c0578063fe9fbb80146106df578063fee81cf4146106fe5761023e565b8063f04e283e1461069a578063f2fde38b146106ad5761023e565b8063d2514e8414610634578063dcc2136114610653578063ec87621c14610672578063efbe1c1c146106865761023e565b806375b238fc11610106578063b3005793116100eb578063b3005793146105ad578063be4994f8146105f6578063be9a6555146106155761023e565b806375b238fc146105615780638da5cb5b146105755761023e565b8063578bcf35146104e65780635aef467a1461052757806361400c991461053a578063715018a6146105595761023e565b806328d6183b116101ca578063451cc191116101995780634a4ee7b11161017e5780634a4ee7b114610496578063514e62fc146104a957806354d1f13d146104de5761023e565b8063451cc19114610456578063474f5a44146104775761023e565b806328d6183b146103ad5780632de94807146103e75780634359d28a14610418578063439fab91146104375761023e565b8063183a4f6e11610206578063183a4f6e146103485780631c10893f1461035d5780631cd64df41461037057806325692962146103a55761023e565b806301ffc9a7146102705780630fb5a6b4146102a457806310098ad5146102e857806313d033c0146103155761023e565b3661023e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561027b575f80fd5b5061028f61028a36600461192e565b61072f565b60405190151581526020015b60405180910390f35b3480156102af575f80fd5b505f546102cf9068010000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161029b565b3480156102f3575f80fd5b5061030761030236600461198e565b61078a565b60405190815260200161029b565b348015610320575f80fd5b505f546102cf90700100000000000000000000000000000000900467ffffffffffffffff1681565b61035b6103563660046119a9565b6107c3565b005b61035b61036b3660046119c0565b6107d0565b34801561037b575f80fd5b5061028f61038a3660046119c0565b638b78c6d8600c9081525f9290925260209091205481161490565b61035b6107e6565b3480156103b8575f80fd5b506040517f64683da100000000000000000000000000000000000000000000000000000000815260200161029b565b3480156103f2575f80fd5b5061030761040136600461198e565b638b78c6d8600c9081525f91909152602090205490565b348015610423575f80fd5b5061035b610432366004611a32565b610833565b348015610442575f80fd5b5061035b610451366004611adc565b61092d565b348015610461575f80fd5b50610307610470366004611adc565b5f92915050565b348015610482575f80fd5b50610307610491366004611adc565b610aa9565b61035b6104a43660046119c0565b610b5c565b3480156104b4575f80fd5b5061028f6104c33660046119c0565b638b78c6d8600c9081525f9290925260209091205416151590565b61035b610b6e565b3480156104f1575f80fd5b5061030761050036600461198e565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b61028f610535366004611adc565b610ba7565b348015610545575f80fd5b5061028f610554366004611b1b565b610d52565b61035b610d99565b34801561056c575f80fd5b50610307600281565b348015610580575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029b565b3480156105b8575f80fd5b506105cc6105c7366004611b4e565b610dac565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161029b565b348015610601575f80fd5b5061035b610610366004611a32565b610efb565b348015610620575f80fd5b505f546102cf9067ffffffffffffffff1681565b34801561063f575f80fd5b5061030761064e36600461198e565b610f99565b34801561065e575f80fd5b5061035b61066d366004611a32565b611018565b34801561067d575f80fd5b50610307600181565b348015610691575f80fd5b506103076110b6565b61035b6106a836600461198e565b6110ea565b61035b6106bb36600461198e565b611124565b3480156106cb575f80fd5b5061028f6106da366004611adc565b61114a565b3480156106ea575f80fd5b5061028f6106f936600461198e565b611201565b348015610709575f80fd5b5061030761071836600461198e565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f64683da1000000000000000000000000000000000000000000000000000000001480610784575061078482611260565b92915050565b73ffffffffffffffffffffffffffffffffffffffff81165f908152600160205260408120546107b983426112b5565b6107849190611bdd565b6107cd3382611336565b50565b6107d8611341565b6107e2828261135b565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261083e81611367565b838214610877576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925575f84848381811061089457610894611bf0565b90506020020160208101906108a99190611c1d565b90508015156001036108eb576108e68787848181106108ca576108ca611bf0565b90506020020160208101906108df919061198e565b600161135b565b61091c565b61091c87878481811061090057610900611bf0565b9050602002016020810190610915919061198e565b6001611336565b50600101610879565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561097e5760018160011c14303b106109755763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61098c83850185611d20565b60408101515f80546060840151608085015167ffffffffffffffff908116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909416919095161791909117169190911790558051909150610a2e90611398565b5f5b816020015151811015610a6d57610a6582602001518281518110610a5657610a56611bf0565b602002602001015160016113e0565b600101610a30565b50508015610aa4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f610ab2611341565b5f610abf83850185611e4d565b90505f8082516002811115610ad657610ad6611f70565b1480610af45750600182516002811115610af257610af2611f70565b145b15610b4b575f8260600151806020019051810190610b129190611f9d565b805190915015610b23578051610b30565b610b30836020015161078a565b9150610b458360200151846040015184611421565b50610b54565b91506107849050565b949350505050565b610b64611341565b6107e28282611336565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610bb583850185611e4d565b90505f81516002811115610bcb57610bcb611f70565b03610c56575f8160600151806020019051810190610be99190611f9d565b80519091503414610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b50610d48565b600181516002811115610c6b57610c6b611f70565b03610d3f575f8160600151806020019051810190610c899190611f9d565b604083015181516020850151929350610cbb9273ffffffffffffffffffffffffffffffffffffffff1691903090611618565b80516020830151610ce29073ffffffffffffffffffffffffffffffffffffffff163061167a565b1015610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610c47565b5f915050610784565b5060019392505050565b5f805b82811015610d4857610d84848483818110610d7257610d72611bf0565b90506020028101906106da9190611fdf565b610d91575f915050610784565b600101610d55565b610da1611341565b610daa5f6116ad565b565b5f80610db733611201565b610ded576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505091525060405190915073ffffffffffffffffffffffffffffffffffffffff89169063dd98558c90610e7e90849060200161208c565b60405160208183030381529060405287876040518463ffffffff1660e01b8152600401610ead939291906120c6565b60408051808303815f875af1158015610ec8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eec91906120ea565b92509250509550959350505050565b6002610f0681611367565b838214610f3f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561092557610f91868683818110610f5e57610f5e611bf0565b9050602002016020810190610f73919061198e565b858584818110610f8557610f85611bf0565b9050602002013561135b565b600101610f41565b5f8073ffffffffffffffffffffffffffffffffffffffff831615610fdc57610fd773ffffffffffffffffffffffffffffffffffffffff84163061167a565b610fde565b475b73ffffffffffffffffffffffffffffffffffffffff84165f90815260016020526040902054909150611011908290612119565b9392505050565b600261102381611367565b83821461105c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925576110ae86868381811061107b5761107b611bf0565b9050602002016020810190611090919061198e565b8585848181106110a2576110a2611bf0565b90506020020135611336565b60010161105e565b5f80546110db9067ffffffffffffffff6801000000000000000082048116911661212c565b67ffffffffffffffff16905090565b6110f2611341565b63389a75e1600c52805f526020600c20805442111561111857636f5e88185f526004601cfd5b5f90556107cd816116ad565b61112c611341565b8060601b61114157637448fbae5f526004601cfd5b6107cd816116ad565b5f61115433611201565b61118a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61119783850185611e4d565b90506001815160028111156111ae576111ae611f70565b14806111cb57505f815160028111156111c9576111c9611f70565b145b15610d3f575f81606001518060200190518101906111e99190611f9d565b9050610c5082602001518360400151835f0151611421565b5f8173ffffffffffffffffffffffffffffffffffffffff16611226638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107845750638b78c6d8600c9081525f83905260209020546003161515610784565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806107845750610784826116f7565b5f8073ffffffffffffffffffffffffffffffffffffffff8416156112f8576112f373ffffffffffffffffffffffffffffffffffffffff85163061167a565b6112fa565b475b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020526040902054909150610b54906113309083612119565b8461178d565b6107e282825f61186b565b638b78c6d819543314610daa576382b429005f526004601cfd5b6107e28282600161186b565b638b78c6d8195433146107cd57638b78c6d8600c52335f52806020600c2054166107cd576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361143f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff82166114bf576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610c47565b6114c88361078a565b81111561153057826114d98461078a565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610c47565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208054839290611564908490612119565b909155505073ffffffffffffffffffffffffffffffffffffffff83166115935761158e82826118c2565b6115b4565b6115b473ffffffffffffffffffffffffffffffffffffffff841683836118db565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f51141661166c57803d873b15171061166c57637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061078457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610784565b5f80546117ba9067ffffffffffffffff70010000000000000000000000000000000082048116911661212c565b67ffffffffffffffff168267ffffffffffffffff1610156117dc57505f610784565b5f546118009067ffffffffffffffff6801000000000000000082048116911661212c565b67ffffffffffffffff168267ffffffffffffffff1610611821575081610784565b5f5467ffffffffffffffff68010000000000000000820481169161184691168461214c565b61185a9067ffffffffffffffff168561216c565b6118649190612183565b9050610784565b638b78c6d8600c52825f526020600c2080548381178361188c575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16107e25763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f51141661192457803d853b151710611924576390b8ec185f526004601cfd5b505f603452505050565b5f6020828403121561193e575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611011575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146107cd575f80fd5b5f6020828403121561199e575f80fd5b81356110118161196d565b5f602082840312156119b9575f80fd5b5035919050565b5f80604083850312156119d1575f80fd5b82356119dc8161196d565b946020939093013593505050565b5f8083601f8401126119fa575f80fd5b50813567ffffffffffffffff811115611a11575f80fd5b6020830191508360208260051b8501011115611a2b575f80fd5b9250929050565b5f805f8060408587031215611a45575f80fd5b843567ffffffffffffffff811115611a5b575f80fd5b611a67878288016119ea565b909550935050602085013567ffffffffffffffff811115611a86575f80fd5b611a92878288016119ea565b95989497509550505050565b5f8083601f840112611aae575f80fd5b50813567ffffffffffffffff811115611ac5575f80fd5b602083019150836020828501011115611a2b575f80fd5b5f8060208385031215611aed575f80fd5b823567ffffffffffffffff811115611b03575f80fd5b611b0f85828601611a9e565b90969095509350505050565b5f8060208385031215611b2c575f80fd5b823567ffffffffffffffff811115611b42575f80fd5b611b0f858286016119ea565b5f805f805f60808688031215611b62575f80fd5b8535611b6d8161196d565b9450602086013567ffffffffffffffff811115611b88575f80fd5b611b9488828901611a9e565b9699909850959660408101359660609091013595509350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561078457610784611bb0565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611c2d575f80fd5b81358015158114611011575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611c8c57611c8c611c3c565b60405290565b6040516080810167ffffffffffffffff81118282101715611c8c57611c8c611c3c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cfc57611cfc611c3c565b604052919050565b803567ffffffffffffffff81168114611d1b575f80fd5b919050565b5f60208284031215611d30575f80fd5b813567ffffffffffffffff811115611d46575f80fd5b820160a08185031215611d57575f80fd5b611d5f611c69565b8135611d6a8161196d565b8152602082013567ffffffffffffffff811115611d85575f80fd5b8201601f81018613611d95575f80fd5b803567ffffffffffffffff811115611daf57611daf611c3c565b8060051b611dbf60208201611cb5565b91825260208184018101929081019089841115611dda575f80fd5b6020850194505b83851015611e085784359250611df68361196d565b82825260209485019490910190611de1565b602086015250611e1e9250505060408301611d04565b6040820152611e2f60608301611d04565b6060820152611e4060808301611d04565b6080820152949350505050565b5f60208284031215611e5d575f80fd5b813567ffffffffffffffff811115611e73575f80fd5b820160808185031215611e84575f80fd5b611e8c611c92565b813560038110611e9a575f80fd5b81526020820135611eaa8161196d565b60208201526040820135611ebd8161196d565b6040820152606082013567ffffffffffffffff811115611edb575f80fd5b80830192505084601f830112611eef575f80fd5b813567ffffffffffffffff811115611f0957611f09611c3c565b611f3a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611cb5565b818152866020838601011115611f4e575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015611fae575f80fd5b506040516020810167ffffffffffffffff81118282101715611fd257611fd2611c3c565b6040529151825250919050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612012575f80fd5b83018035915067ffffffffffffffff82111561202c575f80fd5b602001915036819003821315611a2b575f80fd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152610b546060840182612040565b606081525f6120d86060830186612040565b60208301949094525060400152919050565b5f80604083850312156120fb575f80fd5b8251602084015190925061210e8161196d565b809150509250929050565b8082018082111561078457610784611bb0565b67ffffffffffffffff818116838216019081111561078457610784611bb0565b67ffffffffffffffff828116828216039081111561078457610784611bb0565b808202811582820484141761078457610784611bb0565b5f826121b6577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea26469706673582212201f1670255558fabbcd29da6d005ba60d64640ef7602785f8cdae9947d6e3168464736f6c634300081a0033",H1={},F1={},L0={_format:z1,contractName:B1,sourceName:N1,abi:P1,bytecode:$1,deployedBytecode:L1,linkReferences:H1,deployedLinkReferences:F1},k1="hh-sol-artifact-1",S1="AllowListIncentive",D1="contracts/incentives/AllowListIncentive.sol",G1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{inputs:[],name:"allowList",outputs:[{internalType:"contract SimpleAllowList",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"pure",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],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:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],V1="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b610f75806100895f395ff3fe608060405260043610610162575f3560e01c8063715018a6116100c6578063c884ef831161007c578063f04e283e11610057578063f04e283e146103fd578063f2fde38b14610410578063fee81cf414610423575f80fd5b8063c884ef831461039b578063db09da12146103c9578063dcc59b6f146103e8575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610334578063a4d66daf14610367578063bb1757cf1461037c575f80fd5b8063715018a61461030057806387b9d25c14610308575f80fd5b806338d52e0f1161011b578063474f5a4411610101578063474f5a44146102755780634e7165a2146102be57806354d1f13d146102f8575f80fd5b806338d52e0f1461020f578063439fab9114610256575f80fd5b8063228cb7331161014b578063228cb733146101b757806325692962146101cb57806328d6183b146101d5575f80fd5b806301ffc9a71461016657806307621eca1461019a575b5f80fd5b348015610171575f80fd5b50610185610180366004610bd8565b610454565b60405190151581526020015b60405180910390f35b3480156101a5575f80fd5b505f545b604051908152602001610191565b3480156101c2575f80fd5b506101a95f5481565b6101d36104af565b005b3480156101e0575f80fd5b506040517fc2c281ec000000000000000000000000000000000000000000000000000000008152602001610191565b34801561021a575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b348015610261575f80fd5b506101d3610270366004610c63565b6104fc565b348015610280575f80fd5b5061029461028f366004610c63565b6105ed565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610191565b3480156102c9575f80fd5b506102eb6102d8366004610c63565b5050604080515f81526020810190915290565b6040516101919190610ca2565b6101d3610621565b6101d361065a565b348015610313575f80fd5b506001546102319073ffffffffffffffffffffffffffffffffffffffff1681565b34801561033f575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610231565b348015610372575f80fd5b506101a960025481565b348015610387575f80fd5b50610185610396366004610d16565b61066d565b3480156103a6575f80fd5b506101856103b5366004610d67565b60036020525f908152604090205460ff1681565b3480156103d4575f80fd5b506101856103e3366004610d16565b6107e0565b3480156103f3575f80fd5b506101a960045481565b6101d361040b366004610d67565b6108ca565b6101d361041e366004610d67565b610907565b34801561042e575f80fd5b506101a961043d366004610d67565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc2c281ec0000000000000000000000000000000000000000000000000000000014806104a957506104a98261092d565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561054d5760018160011c14303b106105445763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61055b83850185610d82565b905061056633610982565b8051600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020015160025580156105e8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6106626109e5565b61066b5f610a1a565b565b5f6106766109e5565b60025460048054905f61068883610dff565b919050551015806106bd575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff165b156106f4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84165f90815260036020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558061074b86610a7f565b6001546040517f3abb060400000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff1690633abb0604906107a79085908590600401610e5b565b5f604051808303815f87803b1580156107be575f80fd5b505af11580156107d0573d5f803e3d5ffd5b5060019998505050505050505050565b5f600254600454108015610819575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff16155b80156108c25750600154604080517fe3f756de00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015260248201929092525f604482015291169063e3f756de90606401602060405180830381865afa15801561089c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c09190610ef3565b155b949350505050565b6108d26109e5565b63389a75e1600c52805f526020600c2080544211156108f857636f5e88185f526004601cfd5b5f905561090481610a1a565b50565b61090f6109e5565b8060601b61092457637448fbae5f526004601cfd5b61090481610a1a565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806104a957506104a982610b42565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461066b576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b60408051600180825281830190925260609182915f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833701905050905084825f81518110610ada57610ada610f12565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610b2857610b28610f12565b911515602092830291909101909101529094909350915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104a957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104a9565b5f60208284031215610be8575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c17575f80fd5b9392505050565b5f8083601f840112610c2e575f80fd5b50813567ffffffffffffffff811115610c45575f80fd5b602083019150836020828501011115610c5c575f80fd5b9250929050565b5f8060208385031215610c74575f80fd5b823567ffffffffffffffff811115610c8a575f80fd5b610c9685828601610c1e565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610904575f80fd5b5f805f60408486031215610d28575f80fd5b8335610d3381610cf5565b9250602084013567ffffffffffffffff811115610d4e575f80fd5b610d5a86828701610c1e565b9497909650939450505050565b5f60208284031215610d77575f80fd5b8135610c1781610cf5565b5f6040828403128015610d93575f80fd5b506040805190810167ffffffffffffffff81118282101715610ddc577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040528235610dea81610cf5565b81526020928301359281019290925250919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610e54577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b604080825283519082018190525f9060208501906060840190835b81811015610eaa57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610e76565b5050838103602080860191909152855180835291810192508501905f5b81811015610ee75782511515845260209384019390920191600101610ec7565b50919695505050505050565b5f60208284031215610f03575f80fd5b81518015158114610c17575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea26469706673582212205f8cdca7587aab6d73f1fb9b0eb17458d3c4f0701945b9d5bfa5c06874e139f864736f6c634300081a0033",U1="0x608060405260043610610162575f3560e01c8063715018a6116100c6578063c884ef831161007c578063f04e283e11610057578063f04e283e146103fd578063f2fde38b14610410578063fee81cf414610423575f80fd5b8063c884ef831461039b578063db09da12146103c9578063dcc59b6f146103e8575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610334578063a4d66daf14610367578063bb1757cf1461037c575f80fd5b8063715018a61461030057806387b9d25c14610308575f80fd5b806338d52e0f1161011b578063474f5a4411610101578063474f5a44146102755780634e7165a2146102be57806354d1f13d146102f8575f80fd5b806338d52e0f1461020f578063439fab9114610256575f80fd5b8063228cb7331161014b578063228cb733146101b757806325692962146101cb57806328d6183b146101d5575f80fd5b806301ffc9a71461016657806307621eca1461019a575b5f80fd5b348015610171575f80fd5b50610185610180366004610bd8565b610454565b60405190151581526020015b60405180910390f35b3480156101a5575f80fd5b505f545b604051908152602001610191565b3480156101c2575f80fd5b506101a95f5481565b6101d36104af565b005b3480156101e0575f80fd5b506040517fc2c281ec000000000000000000000000000000000000000000000000000000008152602001610191565b34801561021a575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b348015610261575f80fd5b506101d3610270366004610c63565b6104fc565b348015610280575f80fd5b5061029461028f366004610c63565b6105ed565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610191565b3480156102c9575f80fd5b506102eb6102d8366004610c63565b5050604080515f81526020810190915290565b6040516101919190610ca2565b6101d3610621565b6101d361065a565b348015610313575f80fd5b506001546102319073ffffffffffffffffffffffffffffffffffffffff1681565b34801561033f575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610231565b348015610372575f80fd5b506101a960025481565b348015610387575f80fd5b50610185610396366004610d16565b61066d565b3480156103a6575f80fd5b506101856103b5366004610d67565b60036020525f908152604090205460ff1681565b3480156103d4575f80fd5b506101856103e3366004610d16565b6107e0565b3480156103f3575f80fd5b506101a960045481565b6101d361040b366004610d67565b6108ca565b6101d361041e366004610d67565b610907565b34801561042e575f80fd5b506101a961043d366004610d67565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc2c281ec0000000000000000000000000000000000000000000000000000000014806104a957506104a98261092d565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561054d5760018160011c14303b106105445763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61055b83850185610d82565b905061056633610982565b8051600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020015160025580156105e8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6106626109e5565b61066b5f610a1a565b565b5f6106766109e5565b60025460048054905f61068883610dff565b919050551015806106bd575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff165b156106f4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84165f90815260036020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558061074b86610a7f565b6001546040517f3abb060400000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff1690633abb0604906107a79085908590600401610e5b565b5f604051808303815f87803b1580156107be575f80fd5b505af11580156107d0573d5f803e3d5ffd5b5060019998505050505050505050565b5f600254600454108015610819575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff16155b80156108c25750600154604080517fe3f756de00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015260248201929092525f604482015291169063e3f756de90606401602060405180830381865afa15801561089c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c09190610ef3565b155b949350505050565b6108d26109e5565b63389a75e1600c52805f526020600c2080544211156108f857636f5e88185f526004601cfd5b5f905561090481610a1a565b50565b61090f6109e5565b8060601b61092457637448fbae5f526004601cfd5b61090481610a1a565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806104a957506104a982610b42565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461066b576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b60408051600180825281830190925260609182915f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833701905050905084825f81518110610ada57610ada610f12565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610b2857610b28610f12565b911515602092830291909101909101529094909350915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104a957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104a9565b5f60208284031215610be8575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c17575f80fd5b9392505050565b5f8083601f840112610c2e575f80fd5b50813567ffffffffffffffff811115610c45575f80fd5b602083019150836020828501011115610c5c575f80fd5b9250929050565b5f8060208385031215610c74575f80fd5b823567ffffffffffffffff811115610c8a575f80fd5b610c9685828601610c1e565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610904575f80fd5b5f805f60408486031215610d28575f80fd5b8335610d3381610cf5565b9250602084013567ffffffffffffffff811115610d4e575f80fd5b610d5a86828701610c1e565b9497909650939450505050565b5f60208284031215610d77575f80fd5b8135610c1781610cf5565b5f6040828403128015610d93575f80fd5b506040805190810167ffffffffffffffff81118282101715610ddc577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040528235610dea81610cf5565b81526020928301359281019290925250919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610e54577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b604080825283519082018190525f9060208501906060840190835b81811015610eaa57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610e76565b5050838103602080860191909152855180835291810192508501905f5b81811015610ee75782511515845260209384019390920191600101610ec7565b50919695505050505050565b5f60208284031215610f03575f80fd5b81518015158114610c17575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea26469706673582212205f8cdca7587aab6d73f1fb9b0eb17458d3c4f0701945b9d5bfa5c06874e139f864736f6c634300081a0033",q1={},j1={},H0={_format:k1,contractName:S1,sourceName:D1,abi:G1,bytecode:V1,deployedBytecode:U1,linkReferences:q1,deployedLinkReferences:j1},Z1="hh-sol-artifact-1",W1="CGDAIncentive",K1="contracts/incentives/CGDAIncentive.sol",Y1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"initialReward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"rewardDecay",type:"uint256"},{indexed:!1,internalType:"uint256",name:"rewardBoost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"totalBudget",type:"uint256"}],name:"CGDAIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"cgdaParams",outputs:[{internalType:"uint256",name:"rewardDecay",type:"uint256"},{internalType:"uint256",name:"rewardBoost",type:"uint256"},{internalType:"uint256",name:"lastClaimTime",type:"uint256"},{internalType:"uint256",name:"currentReward",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",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:[],name:"totalBudget",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Q1="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611b6f806100895f395ff3fe6080604052600436106101f5575f3560e01c806354d1f13d11610117578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105f8578063fe9fbb801461060b578063fee81cf41461062a575f80fd5b8063ec87621c146105d1578063f04e283e146105e5575f80fd5b8063c884ef8314610550578063db09da121461057e578063dcc213611461059d578063dcc59b6f146105bc575f80fd5b80638da5cb5b116100e75780638da5cb5b146104e5578063bb1757cf146104fd578063be4994f81461051c578063c78da39a1461053b575f80fd5b806354d1f13d1461047f578063715018a61461048757806375b238fc1461048f57806375ef18d0146104a3575f80fd5b80632de948071161018d578063474f5a441161015d578063474f5a44146103c25780634a4ee7b11461040b5780634e7165a21461041e578063514e62fc1461044a575f80fd5b80632de948071461030257806338d52e0f146103335780634359d28a14610384578063439fab91146103a3575f80fd5b80631cd64df4116101c85780631cd64df414610277578063228cb733146102ac57806325692962146102c057806328d6183b146102c8575f80fd5b806301ffc9a7146101f957806307621eca1461022d578063183a4f6e1461024f5780631c10893f14610264575b5f80fd5b348015610204575f80fd5b50610218610213366004611502565b61065b565b60405190151581526020015b60405180910390f35b348015610238575f80fd5b506102416106b6565b604051908152602001610224565b61026261025d366004611541565b610736565b005b610262610272366004611580565b610743565b348015610282575f80fd5b50610218610291366004611580565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102b7575f80fd5b506102415f5481565b610262610759565b3480156102d3575f80fd5b506040517f53cf8555000000000000000000000000000000000000000000000000000000008152602001610224565b34801561030d575f80fd5b5061024161031c3660046115a8565b638b78c6d8600c9081525f91909152602090205490565b34801561033e575f80fd5b5060075461035f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610224565b34801561038f575f80fd5b5061026261039e366004611609565b6107a6565b3480156103ae575f80fd5b506102626103bd3660046116b3565b6108a0565b3480156103cd575f80fd5b506103e16103dc3660046116b3565b610b63565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610224565b610262610419366004611580565b610c90565b348015610429575f80fd5b5061043d6104383660046116b3565b610ca2565b6040516102249190611720565b348015610455575f80fd5b50610218610464366004611580565b638b78c6d8600c9081525f9290925260209091205416151590565b610262610d60565b610262610d99565b34801561049a575f80fd5b50610241600281565b3480156104ae575f80fd5b506002546003546004546005546104c59392919084565b604080519485526020850193909352918301526060820152608001610224565b3480156104f0575f80fd5b50638b78c6d8195461035f565b348015610508575f80fd5b50610218610517366004611732565b610dac565b348015610527575f80fd5b50610262610536366004611609565b610f82565b348015610546575f80fd5b5061024160065481565b34801561055b575f80fd5b5061021861056a3660046115a8565b60016020525f908152604090205460ff1681565b348015610589575f80fd5b50610218610598366004611732565b611020565b3480156105a8575f80fd5b506102626105b7366004611609565b611032565b3480156105c7575f80fd5b5061024160085481565b3480156105dc575f80fd5b50610241600181565b6102626105f33660046115a8565b6110d0565b6102626106063660046115a8565b61110a565b348015610616575f80fd5b506102186106253660046115a8565b611130565b348015610635575f80fd5b506102416106443660046115a8565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f53cf85550000000000000000000000000000000000000000000000000000000014806106b057506106b08261118f565b92915050565b6004545f9081906106c790426117ae565b6007549091505f906106ef9073ffffffffffffffffffffffffffffffffffffffff16306111e4565b90505f610e106002600101548461070691906117c1565b61071091906117d8565b60055461071d9190611810565b905081811161072c578061072e565b815b935050505090565b6107403382611217565b50565b61074b611222565b610755828261123c565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026107b181611248565b8382146107ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898575f84848381811061080757610807611823565b905060200201602081019061081c9190611850565b905080151560010361085e5761085987878481811061083d5761083d611823565b905060200201602081019061085291906115a8565b600161123c565b61088f565b61088f87878481811061087357610873611823565b905060200201602081019061088891906115a8565b6001611217565b506001016107ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108f15760018160011c14303b106108e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6108ff838501856118f6565b80519091505f906109269073ffffffffffffffffffffffffffffffffffffffff16306111e4565b9050816080015181101561099757815160808301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b602082015115806109aa57506040820151155b806109b757506060820151155b806109c9575081602001518260800151105b15610a00576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560408051608080820183528285015180835260608087015160208086018290524296860187905288015191909401819052600291909155600392909255600492909255600555820151600655610a9b33611279565b610aaa8260a0015160016112c1565b815f015173ffffffffffffffffffffffffffffffffffffffff167f2364e5ed5f8639e9bae046dc67aabf43f410e931f25143a10f5e1a8744ad717e8360200151846040015185606001518660800151604051610b1f949392919093845260208401929092526040830152606082015260800190565b60405180910390a250508015610b5e576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b7081611248565b5f610b7d85870187611979565b90505f8160200151806020019051810190610b989190611a50565b8251600754919250610bc19173ffffffffffffffffffffffffffffffffffffffff169083611302565b81516007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610c6191611720565b60405180910390a260075490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c98611222565b6107558282611217565b60605f610cb1838501856118f6565b60408051608081019091529091508060018152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610d289151815260200190565b60408051601f19818403018152918152915251610d489190602001611a67565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610da1611222565b610daa5f611355565b565b5f610db5611222565b610dbe8461139f565b610e1b57604080517f4139d81d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015260248101919091525f604482015260640161098e565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556008805491610e7883611b02565b91905055505f610e866106b6565b426004556002549091508111610e9e57600254610eab565b600254610eab90826117ae565b600555600754610ed29073ffffffffffffffffffffffffffffffffffffffff168683611302565b6007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529187901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8616907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610f6f91611720565b60405180910390a2506001949350505050565b6002610f8d81611248565b838214610fc6576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561089857611018868683818110610fe557610fe5611823565b9050602002016020810190610ffa91906115a8565b85858481811061100c5761100c611823565b9050602002013561123c565b600101610fc8565b5f61102a8461139f565b949350505050565b600261103d81611248565b838214611076576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898576110c886868381811061109557611095611823565b90506020020160208101906110aa91906115a8565b8585848181106110bc576110bc611823565b90506020020135611217565b600101611078565b6110d8611222565b63389a75e1600c52805f526020600c2080544211156110fe57636f5e88185f526004601cfd5b5f905561074081611355565b611112611222565b8060601b61112757637448fbae5f526004601cfd5b61074081611355565b5f8173ffffffffffffffffffffffffffffffffffffffff16611155638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b05750638b78c6d8600c9081525f839052602090205460031615156106b0565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b057506106b082611415565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61075582825f6114ab565b638b78c6d819543314610daa576382b429005f526004601cfd5b610755828260016114ab565b638b78c6d81954331461074057638b78c6d8600c52335f52806020600c205416610740576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f51141661134b57803d853b15171061134b576390b8ec185f526004601cfd5b505f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f806113a96106b6565b90505f811180156113dd575060075481906113da9073ffffffffffffffffffffffffffffffffffffffff16306111e4565b10155b801561140e575073ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604090205460ff16155b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b0565b638b78c6d8600c52825f526020600c208054838117836114cc575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611512575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461140e575f80fd5b5f60208284031215611551575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461157b575f80fd5b919050565b5f8060408385031215611591575f80fd5b61159a83611558565b946020939093013593505050565b5f602082840312156115b8575f80fd5b61140e82611558565b5f8083601f8401126115d1575f80fd5b50813567ffffffffffffffff8111156115e8575f80fd5b6020830191508360208260051b8501011115611602575f80fd5b9250929050565b5f805f806040858703121561161c575f80fd5b843567ffffffffffffffff811115611632575f80fd5b61163e878288016115c1565b909550935050602085013567ffffffffffffffff81111561165d575f80fd5b611669878288016115c1565b95989497509550505050565b5f8083601f840112611685575f80fd5b50813567ffffffffffffffff81111561169c575f80fd5b602083019150836020828501011115611602575f80fd5b5f80602083850312156116c4575f80fd5b823567ffffffffffffffff8111156116da575f80fd5b6116e685828601611675565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61140e60208301846116f2565b5f805f60408486031215611744575f80fd5b61174d84611558565b9250602084013567ffffffffffffffff811115611768575f80fd5b61177486828701611675565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156106b0576106b0611781565b80820281158282048414176106b0576106b0611781565b5f8261180b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156106b0576106b0611781565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611860575f80fd5b8135801515811461140e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118bf576118bf61186f565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156118ee576118ee61186f565b604052919050565b5f60c0828403128015611907575f80fd5b5060405160c0810167ffffffffffffffff8111828210171561192b5761192b61186f565b60405261193783611558565b81526020838101359082015260408084013590820152606080840135908201526080808401359082015261196d60a08401611558565b60a08201529392505050565b5f60208284031215611989575f80fd5b813567ffffffffffffffff81111561199f575f80fd5b8201604081850312156119b0575f80fd5b6119b861189c565b6119c182611558565b8152602082013567ffffffffffffffff8111156119dc575f80fd5b80830192505084601f8301126119f0575f80fd5b813567ffffffffffffffff811115611a0a57611a0a61186f565b611a1d6020601f19601f840116016118c5565b818152866020838601011115611a31575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611a60575f80fd5b5051919050565b602081525f825160038110611aa3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261102a60a08401826116f2565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b3257611b32611781565b506001019056fea26469706673582212204c5a8d5f6af6fc9164fbaae602a9a2c5e2aa46f6a799d3fced6fd921c906001f64736f6c634300081a0033",J1="0x6080604052600436106101f5575f3560e01c806354d1f13d11610117578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105f8578063fe9fbb801461060b578063fee81cf41461062a575f80fd5b8063ec87621c146105d1578063f04e283e146105e5575f80fd5b8063c884ef8314610550578063db09da121461057e578063dcc213611461059d578063dcc59b6f146105bc575f80fd5b80638da5cb5b116100e75780638da5cb5b146104e5578063bb1757cf146104fd578063be4994f81461051c578063c78da39a1461053b575f80fd5b806354d1f13d1461047f578063715018a61461048757806375b238fc1461048f57806375ef18d0146104a3575f80fd5b80632de948071161018d578063474f5a441161015d578063474f5a44146103c25780634a4ee7b11461040b5780634e7165a21461041e578063514e62fc1461044a575f80fd5b80632de948071461030257806338d52e0f146103335780634359d28a14610384578063439fab91146103a3575f80fd5b80631cd64df4116101c85780631cd64df414610277578063228cb733146102ac57806325692962146102c057806328d6183b146102c8575f80fd5b806301ffc9a7146101f957806307621eca1461022d578063183a4f6e1461024f5780631c10893f14610264575b5f80fd5b348015610204575f80fd5b50610218610213366004611502565b61065b565b60405190151581526020015b60405180910390f35b348015610238575f80fd5b506102416106b6565b604051908152602001610224565b61026261025d366004611541565b610736565b005b610262610272366004611580565b610743565b348015610282575f80fd5b50610218610291366004611580565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102b7575f80fd5b506102415f5481565b610262610759565b3480156102d3575f80fd5b506040517f53cf8555000000000000000000000000000000000000000000000000000000008152602001610224565b34801561030d575f80fd5b5061024161031c3660046115a8565b638b78c6d8600c9081525f91909152602090205490565b34801561033e575f80fd5b5060075461035f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610224565b34801561038f575f80fd5b5061026261039e366004611609565b6107a6565b3480156103ae575f80fd5b506102626103bd3660046116b3565b6108a0565b3480156103cd575f80fd5b506103e16103dc3660046116b3565b610b63565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610224565b610262610419366004611580565b610c90565b348015610429575f80fd5b5061043d6104383660046116b3565b610ca2565b6040516102249190611720565b348015610455575f80fd5b50610218610464366004611580565b638b78c6d8600c9081525f9290925260209091205416151590565b610262610d60565b610262610d99565b34801561049a575f80fd5b50610241600281565b3480156104ae575f80fd5b506002546003546004546005546104c59392919084565b604080519485526020850193909352918301526060820152608001610224565b3480156104f0575f80fd5b50638b78c6d8195461035f565b348015610508575f80fd5b50610218610517366004611732565b610dac565b348015610527575f80fd5b50610262610536366004611609565b610f82565b348015610546575f80fd5b5061024160065481565b34801561055b575f80fd5b5061021861056a3660046115a8565b60016020525f908152604090205460ff1681565b348015610589575f80fd5b50610218610598366004611732565b611020565b3480156105a8575f80fd5b506102626105b7366004611609565b611032565b3480156105c7575f80fd5b5061024160085481565b3480156105dc575f80fd5b50610241600181565b6102626105f33660046115a8565b6110d0565b6102626106063660046115a8565b61110a565b348015610616575f80fd5b506102186106253660046115a8565b611130565b348015610635575f80fd5b506102416106443660046115a8565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f53cf85550000000000000000000000000000000000000000000000000000000014806106b057506106b08261118f565b92915050565b6004545f9081906106c790426117ae565b6007549091505f906106ef9073ffffffffffffffffffffffffffffffffffffffff16306111e4565b90505f610e106002600101548461070691906117c1565b61071091906117d8565b60055461071d9190611810565b905081811161072c578061072e565b815b935050505090565b6107403382611217565b50565b61074b611222565b610755828261123c565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026107b181611248565b8382146107ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898575f84848381811061080757610807611823565b905060200201602081019061081c9190611850565b905080151560010361085e5761085987878481811061083d5761083d611823565b905060200201602081019061085291906115a8565b600161123c565b61088f565b61088f87878481811061087357610873611823565b905060200201602081019061088891906115a8565b6001611217565b506001016107ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108f15760018160011c14303b106108e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6108ff838501856118f6565b80519091505f906109269073ffffffffffffffffffffffffffffffffffffffff16306111e4565b9050816080015181101561099757815160808301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b602082015115806109aa57506040820151155b806109b757506060820151155b806109c9575081602001518260800151105b15610a00576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560408051608080820183528285015180835260608087015160208086018290524296860187905288015191909401819052600291909155600392909255600492909255600555820151600655610a9b33611279565b610aaa8260a0015160016112c1565b815f015173ffffffffffffffffffffffffffffffffffffffff167f2364e5ed5f8639e9bae046dc67aabf43f410e931f25143a10f5e1a8744ad717e8360200151846040015185606001518660800151604051610b1f949392919093845260208401929092526040830152606082015260800190565b60405180910390a250508015610b5e576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b7081611248565b5f610b7d85870187611979565b90505f8160200151806020019051810190610b989190611a50565b8251600754919250610bc19173ffffffffffffffffffffffffffffffffffffffff169083611302565b81516007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610c6191611720565b60405180910390a260075490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c98611222565b6107558282611217565b60605f610cb1838501856118f6565b60408051608081019091529091508060018152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610d289151815260200190565b60408051601f19818403018152918152915251610d489190602001611a67565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610da1611222565b610daa5f611355565b565b5f610db5611222565b610dbe8461139f565b610e1b57604080517f4139d81d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015260248101919091525f604482015260640161098e565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556008805491610e7883611b02565b91905055505f610e866106b6565b426004556002549091508111610e9e57600254610eab565b600254610eab90826117ae565b600555600754610ed29073ffffffffffffffffffffffffffffffffffffffff168683611302565b6007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529187901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8616907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610f6f91611720565b60405180910390a2506001949350505050565b6002610f8d81611248565b838214610fc6576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561089857611018868683818110610fe557610fe5611823565b9050602002016020810190610ffa91906115a8565b85858481811061100c5761100c611823565b9050602002013561123c565b600101610fc8565b5f61102a8461139f565b949350505050565b600261103d81611248565b838214611076576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898576110c886868381811061109557611095611823565b90506020020160208101906110aa91906115a8565b8585848181106110bc576110bc611823565b90506020020135611217565b600101611078565b6110d8611222565b63389a75e1600c52805f526020600c2080544211156110fe57636f5e88185f526004601cfd5b5f905561074081611355565b611112611222565b8060601b61112757637448fbae5f526004601cfd5b61074081611355565b5f8173ffffffffffffffffffffffffffffffffffffffff16611155638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b05750638b78c6d8600c9081525f839052602090205460031615156106b0565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b057506106b082611415565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61075582825f6114ab565b638b78c6d819543314610daa576382b429005f526004601cfd5b610755828260016114ab565b638b78c6d81954331461074057638b78c6d8600c52335f52806020600c205416610740576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f51141661134b57803d853b15171061134b576390b8ec185f526004601cfd5b505f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f806113a96106b6565b90505f811180156113dd575060075481906113da9073ffffffffffffffffffffffffffffffffffffffff16306111e4565b10155b801561140e575073ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604090205460ff16155b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b0565b638b78c6d8600c52825f526020600c208054838117836114cc575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611512575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461140e575f80fd5b5f60208284031215611551575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461157b575f80fd5b919050565b5f8060408385031215611591575f80fd5b61159a83611558565b946020939093013593505050565b5f602082840312156115b8575f80fd5b61140e82611558565b5f8083601f8401126115d1575f80fd5b50813567ffffffffffffffff8111156115e8575f80fd5b6020830191508360208260051b8501011115611602575f80fd5b9250929050565b5f805f806040858703121561161c575f80fd5b843567ffffffffffffffff811115611632575f80fd5b61163e878288016115c1565b909550935050602085013567ffffffffffffffff81111561165d575f80fd5b611669878288016115c1565b95989497509550505050565b5f8083601f840112611685575f80fd5b50813567ffffffffffffffff81111561169c575f80fd5b602083019150836020828501011115611602575f80fd5b5f80602083850312156116c4575f80fd5b823567ffffffffffffffff8111156116da575f80fd5b6116e685828601611675565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61140e60208301846116f2565b5f805f60408486031215611744575f80fd5b61174d84611558565b9250602084013567ffffffffffffffff811115611768575f80fd5b61177486828701611675565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156106b0576106b0611781565b80820281158282048414176106b0576106b0611781565b5f8261180b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156106b0576106b0611781565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611860575f80fd5b8135801515811461140e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118bf576118bf61186f565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156118ee576118ee61186f565b604052919050565b5f60c0828403128015611907575f80fd5b5060405160c0810167ffffffffffffffff8111828210171561192b5761192b61186f565b60405261193783611558565b81526020838101359082015260408084013590820152606080840135908201526080808401359082015261196d60a08401611558565b60a08201529392505050565b5f60208284031215611989575f80fd5b813567ffffffffffffffff81111561199f575f80fd5b8201604081850312156119b0575f80fd5b6119b861189c565b6119c182611558565b8152602082013567ffffffffffffffff8111156119dc575f80fd5b80830192505084601f8301126119f0575f80fd5b813567ffffffffffffffff811115611a0a57611a0a61186f565b611a1d6020601f19601f840116016118c5565b818152866020838601011115611a31575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611a60575f80fd5b5051919050565b602081525f825160038110611aa3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261102a60a08401826116f2565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b3257611b32611781565b506001019056fea26469706673582212204c5a8d5f6af6fc9164fbaae602a9a2c5e2aa46f6a799d3fced6fd921c906001f64736f6c634300081a0033",X1={},f5={},F0={_format:Z1,contractName:W1,sourceName:K1,abi:Y1,bytecode:Q1,deployedBytecode:J1,linkReferences:X1,deployedLinkReferences:f5},e5="hh-sol-artifact-1",b5="ERC20Incentive",a5="contracts/incentives/ERC20Incentive.sol",t5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"enum AERC20Incentive.Strategy",name:"strategy",type:"uint8"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"},{indexed:!1,internalType:"address",name:"manager",type:"address"}],name:"ERC20IncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"entry",type:"address"}],name:"Entry",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ToppedUp",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"drawRaffle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"entries",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"strategy",outputs:[{internalType:"enum AERC20Incentive.Strategy",name:"",type:"uint8"}],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:"uint256",name:"amount",type:"uint256"}],name:"topup",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],d5="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612149806100895f395ff3fe608060405260043610610243575f3560e01c806354d1f13d11610131578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b14610677578063fe9fbb801461068a578063fee81cf4146106a9575f80fd5b8063ec87621c14610650578063f04e283e14610664575f80fd5b8063c884ef83146105cf578063db09da12146105fd578063dcc213611461061c578063dcc59b6f1461063b575f80fd5b8063a4d66daf11610101578063b30906d4116100e7578063b30906d414610572578063bb1757cf14610591578063be4994f8146105b0575f80fd5b8063a4d66daf14610537578063a8c62e761461054c575f80fd5b806354d1f13d146104fb578063715018a61461050357806375b238fc1461050b5780638da5cb5b1461051f575f80fd5b80632de94807116101c1578063439fab91116101915780634a4ee7b1116101775780634a4ee7b1146104875780634e7165a21461049a578063514e62fc146104c6575f80fd5b8063439fab911461041f578063474f5a441461043e575f80fd5b80632de948071461035f57806330db555f1461039057806338d52e0f146103af5780634359d28a14610400575f80fd5b80631cd64df411610216578063228cb733116101fc578063228cb73314610309578063256929621461031d57806328d6183b14610325575f80fd5b80631cd64df4146102c05780632275aea9146102f5575f80fd5b806301ffc9a71461024757806307621eca1461027b578063183a4f6e146102985780631c10893f146102ad575b5f80fd5b348015610252575f80fd5b506102666102613660046119ee565b6106da565b60405190151581526020015b60405180910390f35b348015610286575f80fd5b505f545b604051908152602001610272565b6102ab6102a6366004611a2d565b610735565b005b6102ab6102bb366004611a6c565b610742565b3480156102cb575f80fd5b506102666102da366004611a6c565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610300575f80fd5b506102ab610758565b348015610314575f80fd5b5061028a5f5481565b6102ab6108d7565b348015610330575f80fd5b506040517f7cc1d5bb000000000000000000000000000000000000000000000000000000008152602001610272565b34801561036a575f80fd5b5061028a610379366004611a94565b638b78c6d8600c9081525f91909152602090205490565b34801561039b575f80fd5b506102ab6103aa366004611a2d565b610924565b3480156103ba575f80fd5b506004546103db9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610272565b34801561040b575f80fd5b506102ab61041a366004611af5565b610a83565b34801561042a575f80fd5b506102ab610439366004611b9f565b610b7d565b348015610449575f80fd5b5061045d610458366004611b9f565b610e4a565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610272565b6102ab610495366004611a6c565b61104d565b3480156104a5575f80fd5b506104b96104b4366004611b9f565b61105f565b6040516102729190611c0c565b3480156104d1575f80fd5b506102666104e0366004611a6c565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ab61112f565b6102ab611168565b348015610516575f80fd5b5061028a600281565b34801561052a575f80fd5b50638b78c6d819546103db565b348015610542575f80fd5b5061028a60065481565b348015610557575f80fd5b506002546105659060ff1681565b6040516102729190611c5f565b34801561057d575f80fd5b506103db61058c366004611a2d565b61117b565b34801561059c575f80fd5b506102666105ab366004611c6d565b6111b0565b3480156105bb575f80fd5b506102ab6105ca366004611af5565b611421565b3480156105da575f80fd5b506102666105e9366004611a94565b60016020525f908152604090205460ff1681565b348015610608575f80fd5b50610266610617366004611c6d565b6114bf565b348015610627575f80fd5b506102ab610636366004611af5565b6114d1565b348015610646575f80fd5b5061028a60055481565b34801561065b575f80fd5b5061028a600181565b6102ab610672366004611a94565b61156f565b6102ab610685366004611a94565b6115a9565b348015610695575f80fd5b506102666106a4366004611a94565b6115cf565b3480156106b4575f80fd5b5061028a6106c3366004611a94565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7cc1d5bb00000000000000000000000000000000000000000000000000000000148061072f575061072f8261162e565b92915050565b61073f3382611683565b50565b61074a61168e565b61075482826116a8565b5050565b6001610763816116b4565b600160025460ff16600181111561077c5761077c611c1e565b146107b3576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051806020016040528042446107cb9190611ce9565b905260038054602083208084529293505f926107e79190611d29565b815481106107f7576107f7611d3c565b5f918252602082200154905460045473ffffffffffffffffffffffffffffffffffffffff928316935061082d92169083906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529284901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8216907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f19818403018152908290526108ca91611c0c565b60405180910390a2505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161092f8161172b565b815f03610968576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045461098d9073ffffffffffffffffffffffffffffffffffffffff1633308561175c565b600160025460ff1660018111156109a6576109a6611c1e565b036109dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f546109e99083611d29565b15610a20576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054610a2d9084611d69565b90508060065f828254610a409190611ce9565b909155505060408051338152602081018590527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a1505050565b6002610a8e8161172b565b838214610ac7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75575f848483818110610ae457610ae4611d3c565b9050602002016020810190610af99190611d7c565b9050801515600103610b3b57610b36878784818110610b1a57610b1a611d3c565b9050602002016020810190610b2f9190611a94565b60016116a8565b610b6c565b610b6c878784818110610b5057610b50611d3c565b9050602002016020810190610b659190611a94565b6001611683565b50600101610ac9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610bce5760018160011c14303b10610bc55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610bdc83850185611e22565b905080604001515f1480610bf257506060810151155b15610c29576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600182602001516001811115610c4257610c42611c1e565b03610c51578160400151610c65565b81606001518260400151610c659190611ea7565b82519091505f90610c8c9073ffffffffffffffffffffffffffffffffffffffff16306117be565b905081811015610cf65782516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015260248101829052604481018390526064015b60405180910390fd5b8251600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020830151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610d7a57610d7a611c1e565b021790555060408301515f556060830151600655610d97336117f1565b610da683608001516001611839565b825f015173ffffffffffffffffffffffffffffffffffffffff167fe83379cf1b79044fa1d0063e68012349f4f5fb730e6a875bdc9d463747ecd0858460200151856040015186606001518760800151604051610e059493929190611ebe565b60405180910390a25050508015610e45576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610e578161172b565b5f610e6485870187611efd565b90505f8160200151806020019051810190610e7f9190611fd4565b9050600160025460ff166001811115610e9a57610e9a611c1e565b03610f11575f5481141580610eb057505f600554115b15610f08573382604051602001610ec79190611feb565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610ced9291600401612025565b5f600655610f56565b5f54610f1d9082611d29565b15610f34573382604051602001610ec79190611feb565b5f54610f409082611d69565b60065f828254610f509190612053565b90915550505b8151600454610f7e9173ffffffffffffffffffffffffffffffffffffffff90911690836116d8565b81516004546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261101e91611c0c565b60405180910390a260045490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b61105561168e565b6107548282611683565b60605f61106e83850185611e22565b90505f60018260200151600181111561108957611089611c1e565b036110985781604001516110ac565b816060015182604001516110ac9190611ea7565b6040805160808101825260018152845173ffffffffffffffffffffffffffffffffffffffff16602080830191909152308284015282518082018452849052825180820185905283518082038301815290840184526060830152915192935061111692909101612066565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61117061168e565b6111795f61187a565b565b6003818154811061118a575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f6111b961168e565b6111c2846118c4565b6111f8576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025460ff16600181111561121057611210611c1e565b036113375760058054905f611224836120dc565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790555460045461128a92169086906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529287901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8516907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261132791611c0c565b60405180910390a250600161141a565b60058054905f611346836120dc565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560038054928301815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055517ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f1539190a25060015b9392505050565b600261142c8161172b565b838214611465576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75576114b786868381811061148457611484611d3c565b90506020020160208101906114999190611a94565b8585848181106114ab576114ab611d3c565b905060200201356116a8565b600101611467565b5f6114c9846118c4565b949350505050565b60026114dc8161172b565b838214611515576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b755761156786868381811061153457611534611d3c565b90506020020160208101906115499190611a94565b85858481811061155b5761155b611d3c565b90506020020135611683565b600101611517565b61157761168e565b63389a75e1600c52805f526020600c20805442111561159d57636f5e88185f526004601cfd5b5f905561073f8161187a565b6115b161168e565b8060601b6115c657637448fbae5f526004601cfd5b61073f8161187a565b5f8173ffffffffffffffffffffffffffffffffffffffff166115f4638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061072f5750638b78c6d8600c9081525f8390526020902054600316151561072f565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061072f575061072f82611901565b61075482825f611997565b638b78c6d819543314611179576382b429005f526004601cfd5b61075482826001611997565b638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f51141661172157803d853b151710611721576390b8ec185f526004601cfd5b505f603452505050565b638b78c6d81954331461073f57638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f5114166117b057803d873b1517106117b057637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561072f57506006546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061072f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461072f565b638b78c6d8600c52825f526020600c208054838117836119b8575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f602082840312156119fe575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461141a575f80fd5b5f60208284031215611a3d575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611a67575f80fd5b919050565b5f8060408385031215611a7d575f80fd5b611a8683611a44565b946020939093013593505050565b5f60208284031215611aa4575f80fd5b61141a82611a44565b5f8083601f840112611abd575f80fd5b50813567ffffffffffffffff811115611ad4575f80fd5b6020830191508360208260051b8501011115611aee575f80fd5b9250929050565b5f805f8060408587031215611b08575f80fd5b843567ffffffffffffffff811115611b1e575f80fd5b611b2a87828801611aad565b909550935050602085013567ffffffffffffffff811115611b49575f80fd5b611b5587828801611aad565b95989497509550505050565b5f8083601f840112611b71575f80fd5b50813567ffffffffffffffff811115611b88575f80fd5b602083019150836020828501011115611aee575f80fd5b5f8060208385031215611bb0575f80fd5b823567ffffffffffffffff811115611bc6575f80fd5b611bd285828601611b61565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61141a6020830184611bde565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611c5b57611c5b611c1e565b9052565b6020810161072f8284611c4b565b5f805f60408486031215611c7f575f80fd5b611c8884611a44565b9250602084013567ffffffffffffffff811115611ca3575f80fd5b611caf86828701611b61565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561072f5761072f611cbc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82611d3757611d37611cfc565b500690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82611d7757611d77611cfc565b500490565b5f60208284031215611d8c575f80fd5b8135801515811461141a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611deb57611deb611d9b565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e1a57611e1a611d9b565b604052919050565b5f60a0828403128015611e33575f80fd5b5060405160a0810167ffffffffffffffff81118282101715611e5757611e57611d9b565b604052611e6383611a44565b8152602083013560028110611e76575f80fd5b60208201526040838101359082015260608084013590820152611e9b60808401611a44565b60808201529392505050565b808202811582820484141761072f5761072f611cbc565b60808101611ecc8287611c4b565b84602083015283604083015273ffffffffffffffffffffffffffffffffffffffff8316606083015295945050505050565b5f60208284031215611f0d575f80fd5b813567ffffffffffffffff811115611f23575f80fd5b820160408185031215611f34575f80fd5b611f3c611dc8565b611f4582611a44565b8152602082013567ffffffffffffffff811115611f60575f80fd5b80830192505084601f830112611f74575f80fd5b813567ffffffffffffffff811115611f8e57611f8e611d9b565b611fa16020601f19601f84011601611df1565b818152866020838601011115611fb5575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611fe4575f80fd5b5051919050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f60208301516040808401526114c96060840182611bde565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6114c96040830184611bde565b8181038181111561072f5761072f611cbc565b602081525f82516003811061207d5761207d611c1e565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526114c960a0840182611bde565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361210c5761210c611cbc565b506001019056fea264697066735822122063c3965cbe54dc1ac5f8e29680add1723d732dff79b8bc929ef1cd3f1699610e64736f6c634300081a0033",n5="0x608060405260043610610243575f3560e01c806354d1f13d11610131578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b14610677578063fe9fbb801461068a578063fee81cf4146106a9575f80fd5b8063ec87621c14610650578063f04e283e14610664575f80fd5b8063c884ef83146105cf578063db09da12146105fd578063dcc213611461061c578063dcc59b6f1461063b575f80fd5b8063a4d66daf11610101578063b30906d4116100e7578063b30906d414610572578063bb1757cf14610591578063be4994f8146105b0575f80fd5b8063a4d66daf14610537578063a8c62e761461054c575f80fd5b806354d1f13d146104fb578063715018a61461050357806375b238fc1461050b5780638da5cb5b1461051f575f80fd5b80632de94807116101c1578063439fab91116101915780634a4ee7b1116101775780634a4ee7b1146104875780634e7165a21461049a578063514e62fc146104c6575f80fd5b8063439fab911461041f578063474f5a441461043e575f80fd5b80632de948071461035f57806330db555f1461039057806338d52e0f146103af5780634359d28a14610400575f80fd5b80631cd64df411610216578063228cb733116101fc578063228cb73314610309578063256929621461031d57806328d6183b14610325575f80fd5b80631cd64df4146102c05780632275aea9146102f5575f80fd5b806301ffc9a71461024757806307621eca1461027b578063183a4f6e146102985780631c10893f146102ad575b5f80fd5b348015610252575f80fd5b506102666102613660046119ee565b6106da565b60405190151581526020015b60405180910390f35b348015610286575f80fd5b505f545b604051908152602001610272565b6102ab6102a6366004611a2d565b610735565b005b6102ab6102bb366004611a6c565b610742565b3480156102cb575f80fd5b506102666102da366004611a6c565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610300575f80fd5b506102ab610758565b348015610314575f80fd5b5061028a5f5481565b6102ab6108d7565b348015610330575f80fd5b506040517f7cc1d5bb000000000000000000000000000000000000000000000000000000008152602001610272565b34801561036a575f80fd5b5061028a610379366004611a94565b638b78c6d8600c9081525f91909152602090205490565b34801561039b575f80fd5b506102ab6103aa366004611a2d565b610924565b3480156103ba575f80fd5b506004546103db9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610272565b34801561040b575f80fd5b506102ab61041a366004611af5565b610a83565b34801561042a575f80fd5b506102ab610439366004611b9f565b610b7d565b348015610449575f80fd5b5061045d610458366004611b9f565b610e4a565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610272565b6102ab610495366004611a6c565b61104d565b3480156104a5575f80fd5b506104b96104b4366004611b9f565b61105f565b6040516102729190611c0c565b3480156104d1575f80fd5b506102666104e0366004611a6c565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ab61112f565b6102ab611168565b348015610516575f80fd5b5061028a600281565b34801561052a575f80fd5b50638b78c6d819546103db565b348015610542575f80fd5b5061028a60065481565b348015610557575f80fd5b506002546105659060ff1681565b6040516102729190611c5f565b34801561057d575f80fd5b506103db61058c366004611a2d565b61117b565b34801561059c575f80fd5b506102666105ab366004611c6d565b6111b0565b3480156105bb575f80fd5b506102ab6105ca366004611af5565b611421565b3480156105da575f80fd5b506102666105e9366004611a94565b60016020525f908152604090205460ff1681565b348015610608575f80fd5b50610266610617366004611c6d565b6114bf565b348015610627575f80fd5b506102ab610636366004611af5565b6114d1565b348015610646575f80fd5b5061028a60055481565b34801561065b575f80fd5b5061028a600181565b6102ab610672366004611a94565b61156f565b6102ab610685366004611a94565b6115a9565b348015610695575f80fd5b506102666106a4366004611a94565b6115cf565b3480156106b4575f80fd5b5061028a6106c3366004611a94565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7cc1d5bb00000000000000000000000000000000000000000000000000000000148061072f575061072f8261162e565b92915050565b61073f3382611683565b50565b61074a61168e565b61075482826116a8565b5050565b6001610763816116b4565b600160025460ff16600181111561077c5761077c611c1e565b146107b3576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051806020016040528042446107cb9190611ce9565b905260038054602083208084529293505f926107e79190611d29565b815481106107f7576107f7611d3c565b5f918252602082200154905460045473ffffffffffffffffffffffffffffffffffffffff928316935061082d92169083906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529284901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8216907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f19818403018152908290526108ca91611c0c565b60405180910390a2505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161092f8161172b565b815f03610968576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045461098d9073ffffffffffffffffffffffffffffffffffffffff1633308561175c565b600160025460ff1660018111156109a6576109a6611c1e565b036109dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f546109e99083611d29565b15610a20576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054610a2d9084611d69565b90508060065f828254610a409190611ce9565b909155505060408051338152602081018590527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a1505050565b6002610a8e8161172b565b838214610ac7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75575f848483818110610ae457610ae4611d3c565b9050602002016020810190610af99190611d7c565b9050801515600103610b3b57610b36878784818110610b1a57610b1a611d3c565b9050602002016020810190610b2f9190611a94565b60016116a8565b610b6c565b610b6c878784818110610b5057610b50611d3c565b9050602002016020810190610b659190611a94565b6001611683565b50600101610ac9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610bce5760018160011c14303b10610bc55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610bdc83850185611e22565b905080604001515f1480610bf257506060810151155b15610c29576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600182602001516001811115610c4257610c42611c1e565b03610c51578160400151610c65565b81606001518260400151610c659190611ea7565b82519091505f90610c8c9073ffffffffffffffffffffffffffffffffffffffff16306117be565b905081811015610cf65782516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015260248101829052604481018390526064015b60405180910390fd5b8251600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020830151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610d7a57610d7a611c1e565b021790555060408301515f556060830151600655610d97336117f1565b610da683608001516001611839565b825f015173ffffffffffffffffffffffffffffffffffffffff167fe83379cf1b79044fa1d0063e68012349f4f5fb730e6a875bdc9d463747ecd0858460200151856040015186606001518760800151604051610e059493929190611ebe565b60405180910390a25050508015610e45576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610e578161172b565b5f610e6485870187611efd565b90505f8160200151806020019051810190610e7f9190611fd4565b9050600160025460ff166001811115610e9a57610e9a611c1e565b03610f11575f5481141580610eb057505f600554115b15610f08573382604051602001610ec79190611feb565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610ced9291600401612025565b5f600655610f56565b5f54610f1d9082611d29565b15610f34573382604051602001610ec79190611feb565b5f54610f409082611d69565b60065f828254610f509190612053565b90915550505b8151600454610f7e9173ffffffffffffffffffffffffffffffffffffffff90911690836116d8565b81516004546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261101e91611c0c565b60405180910390a260045490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b61105561168e565b6107548282611683565b60605f61106e83850185611e22565b90505f60018260200151600181111561108957611089611c1e565b036110985781604001516110ac565b816060015182604001516110ac9190611ea7565b6040805160808101825260018152845173ffffffffffffffffffffffffffffffffffffffff16602080830191909152308284015282518082018452849052825180820185905283518082038301815290840184526060830152915192935061111692909101612066565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61117061168e565b6111795f61187a565b565b6003818154811061118a575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f6111b961168e565b6111c2846118c4565b6111f8576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025460ff16600181111561121057611210611c1e565b036113375760058054905f611224836120dc565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790555460045461128a92169086906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529287901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8516907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261132791611c0c565b60405180910390a250600161141a565b60058054905f611346836120dc565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560038054928301815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055517ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f1539190a25060015b9392505050565b600261142c8161172b565b838214611465576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75576114b786868381811061148457611484611d3c565b90506020020160208101906114999190611a94565b8585848181106114ab576114ab611d3c565b905060200201356116a8565b600101611467565b5f6114c9846118c4565b949350505050565b60026114dc8161172b565b838214611515576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b755761156786868381811061153457611534611d3c565b90506020020160208101906115499190611a94565b85858481811061155b5761155b611d3c565b90506020020135611683565b600101611517565b61157761168e565b63389a75e1600c52805f526020600c20805442111561159d57636f5e88185f526004601cfd5b5f905561073f8161187a565b6115b161168e565b8060601b6115c657637448fbae5f526004601cfd5b61073f8161187a565b5f8173ffffffffffffffffffffffffffffffffffffffff166115f4638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061072f5750638b78c6d8600c9081525f8390526020902054600316151561072f565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061072f575061072f82611901565b61075482825f611997565b638b78c6d819543314611179576382b429005f526004601cfd5b61075482826001611997565b638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f51141661172157803d853b151710611721576390b8ec185f526004601cfd5b505f603452505050565b638b78c6d81954331461073f57638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f5114166117b057803d873b1517106117b057637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561072f57506006546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061072f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461072f565b638b78c6d8600c52825f526020600c208054838117836119b8575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f602082840312156119fe575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461141a575f80fd5b5f60208284031215611a3d575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611a67575f80fd5b919050565b5f8060408385031215611a7d575f80fd5b611a8683611a44565b946020939093013593505050565b5f60208284031215611aa4575f80fd5b61141a82611a44565b5f8083601f840112611abd575f80fd5b50813567ffffffffffffffff811115611ad4575f80fd5b6020830191508360208260051b8501011115611aee575f80fd5b9250929050565b5f805f8060408587031215611b08575f80fd5b843567ffffffffffffffff811115611b1e575f80fd5b611b2a87828801611aad565b909550935050602085013567ffffffffffffffff811115611b49575f80fd5b611b5587828801611aad565b95989497509550505050565b5f8083601f840112611b71575f80fd5b50813567ffffffffffffffff811115611b88575f80fd5b602083019150836020828501011115611aee575f80fd5b5f8060208385031215611bb0575f80fd5b823567ffffffffffffffff811115611bc6575f80fd5b611bd285828601611b61565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61141a6020830184611bde565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611c5b57611c5b611c1e565b9052565b6020810161072f8284611c4b565b5f805f60408486031215611c7f575f80fd5b611c8884611a44565b9250602084013567ffffffffffffffff811115611ca3575f80fd5b611caf86828701611b61565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561072f5761072f611cbc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82611d3757611d37611cfc565b500690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82611d7757611d77611cfc565b500490565b5f60208284031215611d8c575f80fd5b8135801515811461141a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611deb57611deb611d9b565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e1a57611e1a611d9b565b604052919050565b5f60a0828403128015611e33575f80fd5b5060405160a0810167ffffffffffffffff81118282101715611e5757611e57611d9b565b604052611e6383611a44565b8152602083013560028110611e76575f80fd5b60208201526040838101359082015260608084013590820152611e9b60808401611a44565b60808201529392505050565b808202811582820484141761072f5761072f611cbc565b60808101611ecc8287611c4b565b84602083015283604083015273ffffffffffffffffffffffffffffffffffffffff8316606083015295945050505050565b5f60208284031215611f0d575f80fd5b813567ffffffffffffffff811115611f23575f80fd5b820160408185031215611f34575f80fd5b611f3c611dc8565b611f4582611a44565b8152602082013567ffffffffffffffff811115611f60575f80fd5b80830192505084601f830112611f74575f80fd5b813567ffffffffffffffff811115611f8e57611f8e611d9b565b611fa16020601f19601f84011601611df1565b818152866020838601011115611fb5575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611fe4575f80fd5b5051919050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f60208301516040808401526114c96060840182611bde565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6114c96040830184611bde565b8181038181111561072f5761072f611cbc565b602081525f82516003811061207d5761207d611c1e565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526114c960a0840182611bde565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361210c5761210c611cbc565b506001019056fea264697066735822122063c3965cbe54dc1ac5f8e29680add1723d732dff79b8bc929ef1cd3f1699610e64736f6c634300081a0033",c5={},i5={},k0={_format:e5,contractName:b5,sourceName:a5,abi:t5,bytecode:d5,deployedBytecode:n5,linkReferences:c5,deployedLinkReferences:i5},s5="hh-sol-artifact-1",r5="ERC20VariableCriteriaIncentiveV2",p5="contracts/incentives/ERC20VariableCriteriaIncentiveV2.sol",o5=[{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"},{indexed:!1,internalType:"uint256",name:"maxReward",type:"uint256"},{components:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"enum ValueType",name:"valueType",type:"uint8"}],indexed:!1,internalType:"struct AERC20VariableCriteriaIncentiveV2.IncentiveCriteria",name:"criteria",type:"tuple"}],name:"ERC20VariableCriteriaIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC20VariableIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ToppedUp",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"getIncentiveCriteria",outputs:[{components:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"enum ValueType",name:"valueType",type:"uint8"}],internalType:"struct AERC20VariableCriteriaIncentiveV2.IncentiveCriteria",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getMaxReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"incentiveCriteria",outputs:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"enum ValueType",name:"valueType",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"maxReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",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:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"topup",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"totalClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],u5="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6121c8806100895f395ff3fe608060405260043610610277575f3560e01c8063715018a61161014b578063c884ef83116100c6578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b14610729578063fe9fbb801461073c578063fee81cf41461075b575f80fd5b8063ec87621c14610702578063f04e283e14610716575f80fd5b8063db09da12116100ac578063db09da12146106af578063dcc21361146106ce578063dcc59b6f146106ed575f80fd5b8063c884ef831461066c578063d54ad2a11461069a575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf1461061a578063be4994f814610639578063c213f3f914610658575f80fd5b8063a4d66daf146105e4578063a871ced2146105f9575f80fd5b8063715018a61461053857806375b238fc1461054057806377548687146105545780638da5cb5b146105cc575f80fd5b806330db555f116101f55780634a4ee7b1116101ab578063514e62fc11610191578063514e62fc146104e657806354d1f13d1461051b57806366a78e6c14610523575f80fd5b80634a4ee7b1146104a75780634e7165a2146104ba575f80fd5b80634359d28a116101db5780634359d28a14610420578063439fab911461043f578063474f5a441461045e575f80fd5b806330db555f146103b057806338d52e0f146103cf575f80fd5b80631cd64df41161024a5780632569296211610230578063256929621461033d57806328d6183b146103455780632de948071461037f575f80fd5b80631cd64df4146102f4578063228cb73314610329575f80fd5b806301ffc9a71461027b57806307621eca146102af578063183a4f6e146102cc5780631c10893f146102e1575b5f80fd5b348015610286575f80fd5b5061029a6102953660046118ed565b61078c565b60405190151581526020015b60405180910390f35b3480156102ba575f80fd5b505f545b6040519081526020016102a6565b6102df6102da366004611933565b6107e7565b005b6102df6102ef36600461196b565b6107f4565b3480156102ff575f80fd5b5061029a61030e36600461196b565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610334575f80fd5b506102be5f5481565b6102df61080a565b348015610350575f80fd5b506040517f52b8e45c0000000000000000000000000000000000000000000000000000000081526020016102a6565b34801561038a575f80fd5b506102be610399366004611995565b638b78c6d8600c9081525f91909152602090205490565b3480156103bb575f80fd5b506102df6103ca366004611933565b610857565b3480156103da575f80fd5b506003546103fb9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102a6565b34801561042b575f80fd5b506102df61043a3660046119f8565b610913565b34801561044a575f80fd5b506102df610459366004611aa2565b610a0d565b348015610469575f80fd5b5061047d610478366004611aa2565b610d5f565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102a6565b6102df6104b536600461196b565b610ec1565b3480156104c5575f80fd5b506104d96104d4366004611aa2565b610ed3565b6040516102a69190611b2d565b3480156104f1575f80fd5b5061029a61050036600461196b565b638b78c6d8600c9081525f9290925260209091205416151590565b6102df610fbc565b34801561052e575f80fd5b506102be60065481565b6102df610ff5565b34801561054b575f80fd5b506102be600281565b34801561055f575f80fd5b506007546008546009546105bb9260ff908116929163ffffffff81169173ffffffffffffffffffffffffffffffffffffffff64010000000083041691780100000000000000000000000000000000000000000000000090041685565b6040516102a6959493929190611b7c565b3480156105d7575f80fd5b50638b78c6d819546103fb565b3480156105ef575f80fd5b506102be60025481565b348015610604575f80fd5b5061060d611008565b6040516102a69190611c35565b348015610625575f80fd5b5061029a610634366004611c43565b6110f7565b348015610644575f80fd5b506102df6106533660046119f8565b611328565b348015610663575f80fd5b506006546102be565b348015610677575f80fd5b5061029a610686366004611995565b60016020525f908152604090205460ff1681565b3480156106a5575f80fd5b506102be60055481565b3480156106ba575f80fd5b5061029a6106c9366004611c43565b6113c6565b3480156106d9575f80fd5b506102df6106e83660046119f8565b6113dc565b3480156106f8575f80fd5b506102be60045481565b34801561070d575f80fd5b506102be600181565b6102df610724366004611995565b61147a565b6102df610737366004611995565b6114b4565b348015610747575f80fd5b5061029a610756366004611995565b6114da565b348015610766575f80fd5b506102be610775366004611995565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f52b8e45c0000000000000000000000000000000000000000000000000000000014806107e157506107e182611539565b92915050565b6107f1338261158e565b50565b6107fc611599565b61080682826115b3565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6001610862816115bf565b815f0361089b576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546108c09073ffffffffffffffffffffffffffffffffffffffff163330856115f0565b8160025f8282546108d19190611cc1565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b600261091e816115bf565b838214610957576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a05575f84848381811061097457610974611cd4565b90506020020160208101906109899190611d01565b90508015156001036109cb576109c68787848181106109aa576109aa611cd4565b90506020020160208101906109bf9190611995565b60016115b3565b6109fc565b6109fc8787848181106109e0576109e0611cd4565b90506020020160208101906109f59190611995565b600161158e565b50600101610959565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610a5e5760018160011c14303b10610a555763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610a6c83850185611db5565b805160208201516040830151606084015160808501519495509293919290915f839003610ac5576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ae673ffffffffffffffffffffffffffffffffffffffff871630611652565b905083811015610b4f5786516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810185905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff88161790555f8581556002859055600684905560055581516007805484929082907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610be057610be0611b3f565b021790555060208201516001808301919091556040830151600283018054606086015173ffffffffffffffffffffffffffffffffffffffff16640100000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911663ffffffff90931692909217919091178082556080850151927fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff909116907801000000000000000000000000000000000000000000000000908490811115610cae57610cae611b3f565b0217905550905050610cbf33611685565b610cca3360016116cd565b8573ffffffffffffffffffffffffffffffffffffffff167f742256c25dbd8c1cb315d87101bae0f6fc7656686d10d32d27fc2765ce9ccb9c86868686604051610d169493929190611ea0565b60405180910390a2505050505050508015610d5a576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610d6c816115bf565b5f610d7985870187611f75565b90505f8160200151806020019051810190610d949190611ff4565b90508060025f828254610da7919061200b565b90915550508151600354610dd49173ffffffffffffffffffffffffffffffffffffffff909116908361170e565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610e9291611b2d565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610ec9611599565b610806828261158e565b60605f80610ee38486018661201e565b9250509150604051806080016040528060016002811115610f0657610f06611b3f565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610f659151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610fa39190602001612050565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610ffd611599565b6110065f611761565b565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040805160a0810190915260078054829060ff16600181111561105757611057611b3f565b600181111561106857611068611b3f565b81526001828101546020830152600283015463ffffffff81166040840152640100000000810473ffffffffffffffffffffffffffffffffffffffff1660608401526080909201917801000000000000000000000000000000000000000000000000900460ff16908111156110de576110de611b3f565b60018111156110ef576110ef611b3f565b905250919050565b5f611100611599565b5f61110d838501856120c6565b90505f81602001518060200190518101906111289190611ff4565b90505f6111386002546005541090565b61116e576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f0361117d5750806111a0565b670de0b6b3a7640000825f546111939190612143565b61119d919061215a565b90505b600654158015906111b2575060065481115b156111bc57506006545b600254816005546111cd9190611cc1565b1115611205576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546112169190611cc1565b92505081905550600160045f82825461122f9190611cc1565b90915550506003546112589073ffffffffffffffffffffffffffffffffffffffff16888361170e565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261131391611b2d565b60405180910390a25060019695505050505050565b6002611333816115bf565b83821461136c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a05576113be86868381811061138b5761138b611cd4565b90506020020160208101906113a09190611995565b8585848181106113b2576113b2611cd4565b905060200201356115b3565b60010161136e565b5f6113d46002546005541090565b949350505050565b60026113e7816115bf565b838214611420576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a055761147286868381811061143f5761143f611cd4565b90506020020160208101906114549190611995565b85858481811061146657611466611cd4565b9050602002013561158e565b600101611422565b611482611599565b63389a75e1600c52805f526020600c2080544211156114a857636f5e88185f526004601cfd5b5f90556107f181611761565b6114bc611599565b8060601b6114d157637448fbae5f526004601cfd5b6107f181611761565b5f8173ffffffffffffffffffffffffffffffffffffffff166114ff638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107e15750638b78c6d8600c9081525f839052602090205460031615156107e1565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806107e157506107e1826117ab565b61080682825f611800565b638b78c6d819543314611006576382b429005f526004601cfd5b61080682826001611800565b638b78c6d8195433146107f157638b78c6d8600c52335f52806020600c2054166107f1576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f51141661164457803d873b15171061164457637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f51141661175757803d853b151710611757576390b8ec185f526004601cfd5b505f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806107e157506107e182611857565b638b78c6d8600c52825f526020600c20805483811783611821575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806107e157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107e1565b5f602082840312156118fd575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461192c575f80fd5b9392505050565b5f60208284031215611943575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146107f1575f80fd5b5f806040838503121561197c575f80fd5b82356119878161194a565b946020939093013593505050565b5f602082840312156119a5575f80fd5b813561192c8161194a565b5f8083601f8401126119c0575f80fd5b50813567ffffffffffffffff8111156119d7575f80fd5b6020830191508360208260051b85010111156119f1575f80fd5b9250929050565b5f805f8060408587031215611a0b575f80fd5b843567ffffffffffffffff811115611a21575f80fd5b611a2d878288016119b0565b909550935050602085013567ffffffffffffffff811115611a4c575f80fd5b611a58878288016119b0565b95989497509550505050565b5f8083601f840112611a74575f80fd5b50813567ffffffffffffffff811115611a8b575f80fd5b6020830191508360208285010111156119f1575f80fd5b5f8060208385031215611ab3575f80fd5b823567ffffffffffffffff811115611ac9575f80fd5b611ad585828601611a64565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61192c6020830184611ae1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106107f1576107f1611b3f565b60a08101611b8987611b6c565b86825285602083015263ffffffff8516604083015273ffffffffffffffffffffffffffffffffffffffff84166060830152611bc383611b6c565b8260808301529695505050505050565b8051611bde81611b6c565b808352506020810151602083015263ffffffff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff60608201511660608301526080810151611c2a81611b6c565b806080840152505050565b60a081016107e18284611bd3565b5f805f60408486031215611c55575f80fd5b8335611c608161194a565b9250602084013567ffffffffffffffff811115611c7b575f80fd5b611c8786828701611a64565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156107e1576107e1611c94565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611d11575f80fd5b8135801515811461192c575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611d7057611d70611d20565b60405290565b6040805190810167ffffffffffffffff81118282101715611d7057611d70611d20565b600281106107f1575f80fd5b8035611db081611d99565b919050565b5f81830361012081128015611dc8575f80fd5b50611dd1611d4d565b8335611ddc8161194a565b815260208481013590820152604080850135908201526060808501359082015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083011215611e2b575f80fd5b611e33611d4d565b91506080840135611e4381611d99565b825260a0840135602083015260c084013563ffffffff81168114611e65575f80fd5b604083015260e0840135611e788161194a565b6060830152611e8a6101008501611da5565b6080830152816080820152809250505092915050565b84815260208101849052604081018390526101008101611ec36060830184611bd3565b95945050505050565b5f82601f830112611edb575f80fd5b813567ffffffffffffffff811115611ef557611ef5611d20565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715611f4257611f42611d20565b604052818152838201602001851015611f59575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611f85575f80fd5b813567ffffffffffffffff811115611f9b575f80fd5b820160408185031215611fac575f80fd5b611fb4611d76565b8135611fbf8161194a565b8152602082013567ffffffffffffffff811115611fda575f80fd5b611fe686828501611ecc565b602083015250949350505050565b5f60208284031215612004575f80fd5b5051919050565b818103818111156107e1576107e1611c94565b5f805f60608486031215612030575f80fd5b833561203b8161194a565b95602085013595506040909401359392505050565b602081525f82516003811061206757612067611b3f565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526113d460a0840182611ae1565b5f602082840312156120d6575f80fd5b813567ffffffffffffffff8111156120ec575f80fd5b8201604081850312156120fd575f80fd5b612105611d76565b813567ffffffffffffffff81111561211b575f80fd5b61212786828501611ecc565b825250602082013567ffffffffffffffff811115611fda575f80fd5b80820281158282048414176107e1576107e1611c94565b5f8261218d577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea264697066735822122069f0df25d1ca7c14d80738715391c4a4b217c6b7362908da91c6fbdcc629bf6364736f6c634300081a0033",y5="0x608060405260043610610277575f3560e01c8063715018a61161014b578063c884ef83116100c6578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b14610729578063fe9fbb801461073c578063fee81cf41461075b575f80fd5b8063ec87621c14610702578063f04e283e14610716575f80fd5b8063db09da12116100ac578063db09da12146106af578063dcc21361146106ce578063dcc59b6f146106ed575f80fd5b8063c884ef831461066c578063d54ad2a11461069a575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf1461061a578063be4994f814610639578063c213f3f914610658575f80fd5b8063a4d66daf146105e4578063a871ced2146105f9575f80fd5b8063715018a61461053857806375b238fc1461054057806377548687146105545780638da5cb5b146105cc575f80fd5b806330db555f116101f55780634a4ee7b1116101ab578063514e62fc11610191578063514e62fc146104e657806354d1f13d1461051b57806366a78e6c14610523575f80fd5b80634a4ee7b1146104a75780634e7165a2146104ba575f80fd5b80634359d28a116101db5780634359d28a14610420578063439fab911461043f578063474f5a441461045e575f80fd5b806330db555f146103b057806338d52e0f146103cf575f80fd5b80631cd64df41161024a5780632569296211610230578063256929621461033d57806328d6183b146103455780632de948071461037f575f80fd5b80631cd64df4146102f4578063228cb73314610329575f80fd5b806301ffc9a71461027b57806307621eca146102af578063183a4f6e146102cc5780631c10893f146102e1575b5f80fd5b348015610286575f80fd5b5061029a6102953660046118ed565b61078c565b60405190151581526020015b60405180910390f35b3480156102ba575f80fd5b505f545b6040519081526020016102a6565b6102df6102da366004611933565b6107e7565b005b6102df6102ef36600461196b565b6107f4565b3480156102ff575f80fd5b5061029a61030e36600461196b565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610334575f80fd5b506102be5f5481565b6102df61080a565b348015610350575f80fd5b506040517f52b8e45c0000000000000000000000000000000000000000000000000000000081526020016102a6565b34801561038a575f80fd5b506102be610399366004611995565b638b78c6d8600c9081525f91909152602090205490565b3480156103bb575f80fd5b506102df6103ca366004611933565b610857565b3480156103da575f80fd5b506003546103fb9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102a6565b34801561042b575f80fd5b506102df61043a3660046119f8565b610913565b34801561044a575f80fd5b506102df610459366004611aa2565b610a0d565b348015610469575f80fd5b5061047d610478366004611aa2565b610d5f565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102a6565b6102df6104b536600461196b565b610ec1565b3480156104c5575f80fd5b506104d96104d4366004611aa2565b610ed3565b6040516102a69190611b2d565b3480156104f1575f80fd5b5061029a61050036600461196b565b638b78c6d8600c9081525f9290925260209091205416151590565b6102df610fbc565b34801561052e575f80fd5b506102be60065481565b6102df610ff5565b34801561054b575f80fd5b506102be600281565b34801561055f575f80fd5b506007546008546009546105bb9260ff908116929163ffffffff81169173ffffffffffffffffffffffffffffffffffffffff64010000000083041691780100000000000000000000000000000000000000000000000090041685565b6040516102a6959493929190611b7c565b3480156105d7575f80fd5b50638b78c6d819546103fb565b3480156105ef575f80fd5b506102be60025481565b348015610604575f80fd5b5061060d611008565b6040516102a69190611c35565b348015610625575f80fd5b5061029a610634366004611c43565b6110f7565b348015610644575f80fd5b506102df6106533660046119f8565b611328565b348015610663575f80fd5b506006546102be565b348015610677575f80fd5b5061029a610686366004611995565b60016020525f908152604090205460ff1681565b3480156106a5575f80fd5b506102be60055481565b3480156106ba575f80fd5b5061029a6106c9366004611c43565b6113c6565b3480156106d9575f80fd5b506102df6106e83660046119f8565b6113dc565b3480156106f8575f80fd5b506102be60045481565b34801561070d575f80fd5b506102be600181565b6102df610724366004611995565b61147a565b6102df610737366004611995565b6114b4565b348015610747575f80fd5b5061029a610756366004611995565b6114da565b348015610766575f80fd5b506102be610775366004611995565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f52b8e45c0000000000000000000000000000000000000000000000000000000014806107e157506107e182611539565b92915050565b6107f1338261158e565b50565b6107fc611599565b61080682826115b3565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6001610862816115bf565b815f0361089b576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546108c09073ffffffffffffffffffffffffffffffffffffffff163330856115f0565b8160025f8282546108d19190611cc1565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b600261091e816115bf565b838214610957576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a05575f84848381811061097457610974611cd4565b90506020020160208101906109899190611d01565b90508015156001036109cb576109c68787848181106109aa576109aa611cd4565b90506020020160208101906109bf9190611995565b60016115b3565b6109fc565b6109fc8787848181106109e0576109e0611cd4565b90506020020160208101906109f59190611995565b600161158e565b50600101610959565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610a5e5760018160011c14303b10610a555763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610a6c83850185611db5565b805160208201516040830151606084015160808501519495509293919290915f839003610ac5576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ae673ffffffffffffffffffffffffffffffffffffffff871630611652565b905083811015610b4f5786516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810185905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff88161790555f8581556002859055600684905560055581516007805484929082907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610be057610be0611b3f565b021790555060208201516001808301919091556040830151600283018054606086015173ffffffffffffffffffffffffffffffffffffffff16640100000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911663ffffffff90931692909217919091178082556080850151927fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff909116907801000000000000000000000000000000000000000000000000908490811115610cae57610cae611b3f565b0217905550905050610cbf33611685565b610cca3360016116cd565b8573ffffffffffffffffffffffffffffffffffffffff167f742256c25dbd8c1cb315d87101bae0f6fc7656686d10d32d27fc2765ce9ccb9c86868686604051610d169493929190611ea0565b60405180910390a2505050505050508015610d5a576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610d6c816115bf565b5f610d7985870187611f75565b90505f8160200151806020019051810190610d949190611ff4565b90508060025f828254610da7919061200b565b90915550508151600354610dd49173ffffffffffffffffffffffffffffffffffffffff909116908361170e565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610e9291611b2d565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610ec9611599565b610806828261158e565b60605f80610ee38486018661201e565b9250509150604051806080016040528060016002811115610f0657610f06611b3f565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610f659151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610fa39190602001612050565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610ffd611599565b6110065f611761565b565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040805160a0810190915260078054829060ff16600181111561105757611057611b3f565b600181111561106857611068611b3f565b81526001828101546020830152600283015463ffffffff81166040840152640100000000810473ffffffffffffffffffffffffffffffffffffffff1660608401526080909201917801000000000000000000000000000000000000000000000000900460ff16908111156110de576110de611b3f565b60018111156110ef576110ef611b3f565b905250919050565b5f611100611599565b5f61110d838501856120c6565b90505f81602001518060200190518101906111289190611ff4565b90505f6111386002546005541090565b61116e576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f0361117d5750806111a0565b670de0b6b3a7640000825f546111939190612143565b61119d919061215a565b90505b600654158015906111b2575060065481115b156111bc57506006545b600254816005546111cd9190611cc1565b1115611205576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546112169190611cc1565b92505081905550600160045f82825461122f9190611cc1565b90915550506003546112589073ffffffffffffffffffffffffffffffffffffffff16888361170e565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261131391611b2d565b60405180910390a25060019695505050505050565b6002611333816115bf565b83821461136c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a05576113be86868381811061138b5761138b611cd4565b90506020020160208101906113a09190611995565b8585848181106113b2576113b2611cd4565b905060200201356115b3565b60010161136e565b5f6113d46002546005541090565b949350505050565b60026113e7816115bf565b838214611420576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a055761147286868381811061143f5761143f611cd4565b90506020020160208101906114549190611995565b85858481811061146657611466611cd4565b9050602002013561158e565b600101611422565b611482611599565b63389a75e1600c52805f526020600c2080544211156114a857636f5e88185f526004601cfd5b5f90556107f181611761565b6114bc611599565b8060601b6114d157637448fbae5f526004601cfd5b6107f181611761565b5f8173ffffffffffffffffffffffffffffffffffffffff166114ff638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107e15750638b78c6d8600c9081525f839052602090205460031615156107e1565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806107e157506107e1826117ab565b61080682825f611800565b638b78c6d819543314611006576382b429005f526004601cfd5b61080682826001611800565b638b78c6d8195433146107f157638b78c6d8600c52335f52806020600c2054166107f1576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f51141661164457803d873b15171061164457637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f51141661175757803d853b151710611757576390b8ec185f526004601cfd5b505f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806107e157506107e182611857565b638b78c6d8600c52825f526020600c20805483811783611821575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806107e157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107e1565b5f602082840312156118fd575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461192c575f80fd5b9392505050565b5f60208284031215611943575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146107f1575f80fd5b5f806040838503121561197c575f80fd5b82356119878161194a565b946020939093013593505050565b5f602082840312156119a5575f80fd5b813561192c8161194a565b5f8083601f8401126119c0575f80fd5b50813567ffffffffffffffff8111156119d7575f80fd5b6020830191508360208260051b85010111156119f1575f80fd5b9250929050565b5f805f8060408587031215611a0b575f80fd5b843567ffffffffffffffff811115611a21575f80fd5b611a2d878288016119b0565b909550935050602085013567ffffffffffffffff811115611a4c575f80fd5b611a58878288016119b0565b95989497509550505050565b5f8083601f840112611a74575f80fd5b50813567ffffffffffffffff811115611a8b575f80fd5b6020830191508360208285010111156119f1575f80fd5b5f8060208385031215611ab3575f80fd5b823567ffffffffffffffff811115611ac9575f80fd5b611ad585828601611a64565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61192c6020830184611ae1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106107f1576107f1611b3f565b60a08101611b8987611b6c565b86825285602083015263ffffffff8516604083015273ffffffffffffffffffffffffffffffffffffffff84166060830152611bc383611b6c565b8260808301529695505050505050565b8051611bde81611b6c565b808352506020810151602083015263ffffffff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff60608201511660608301526080810151611c2a81611b6c565b806080840152505050565b60a081016107e18284611bd3565b5f805f60408486031215611c55575f80fd5b8335611c608161194a565b9250602084013567ffffffffffffffff811115611c7b575f80fd5b611c8786828701611a64565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156107e1576107e1611c94565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611d11575f80fd5b8135801515811461192c575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611d7057611d70611d20565b60405290565b6040805190810167ffffffffffffffff81118282101715611d7057611d70611d20565b600281106107f1575f80fd5b8035611db081611d99565b919050565b5f81830361012081128015611dc8575f80fd5b50611dd1611d4d565b8335611ddc8161194a565b815260208481013590820152604080850135908201526060808501359082015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083011215611e2b575f80fd5b611e33611d4d565b91506080840135611e4381611d99565b825260a0840135602083015260c084013563ffffffff81168114611e65575f80fd5b604083015260e0840135611e788161194a565b6060830152611e8a6101008501611da5565b6080830152816080820152809250505092915050565b84815260208101849052604081018390526101008101611ec36060830184611bd3565b95945050505050565b5f82601f830112611edb575f80fd5b813567ffffffffffffffff811115611ef557611ef5611d20565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715611f4257611f42611d20565b604052818152838201602001851015611f59575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611f85575f80fd5b813567ffffffffffffffff811115611f9b575f80fd5b820160408185031215611fac575f80fd5b611fb4611d76565b8135611fbf8161194a565b8152602082013567ffffffffffffffff811115611fda575f80fd5b611fe686828501611ecc565b602083015250949350505050565b5f60208284031215612004575f80fd5b5051919050565b818103818111156107e1576107e1611c94565b5f805f60608486031215612030575f80fd5b833561203b8161194a565b95602085013595506040909401359392505050565b602081525f82516003811061206757612067611b3f565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526113d460a0840182611ae1565b5f602082840312156120d6575f80fd5b813567ffffffffffffffff8111156120ec575f80fd5b8201604081850312156120fd575f80fd5b612105611d76565b813567ffffffffffffffff81111561211b575f80fd5b61212786828501611ecc565b825250602082013567ffffffffffffffff811115611fda575f80fd5b80820281158282048414176107e1576107e1611c94565b5f8261218d577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea264697066735822122069f0df25d1ca7c14d80738715391c4a4b217c6b7362908da91c6fbdcc629bf6364736f6c634300081a0033",l5={},m5={},S0={_format:s5,contractName:r5,sourceName:p5,abi:o5,bytecode:u5,deployedBytecode:y5,linkReferences:l5,deployedLinkReferences:m5},T5="hh-sol-artifact-1",w5="ERC20VariableIncentive",h5="contracts/incentives/ERC20VariableIncentive.sol",v5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC20VariableIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ToppedUp",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",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:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"topup",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"totalClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],g5="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611c81806100895f395ff3fe60806040526004361061020f575f3560e01c806354d1f13d11610117578063d54ad2a1116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105ff578063fe9fbb8014610612578063fee81cf414610631575f80fd5b8063ec87621c146105d8578063f04e283e146105ec575f80fd5b8063d54ad2a114610570578063db09da1214610585578063dcc21361146105a4578063dcc59b6f146105c3575f80fd5b8063a4d66daf116100e7578063a4d66daf146104ef578063bb1757cf14610504578063be4994f814610523578063c884ef8314610542575f80fd5b806354d1f13d146104b3578063715018a6146104bb57806375b238fc146104c35780638da5cb5b146104d7575f80fd5b80632de94807116101a7578063439fab91116101775780634a4ee7b11161015d5780634a4ee7b11461043f5780634e7165a214610452578063514e62fc1461047e575f80fd5b8063439fab91146103d7578063474f5a44146103f6575f80fd5b80632de948071461031757806330db555f1461034857806338d52e0f146103675780634359d28a146103b8575f80fd5b80631cd64df4116101e25780631cd64df41461028c578063228cb733146102c157806325692962146102d557806328d6183b146102dd575f80fd5b806301ffc9a71461021357806307621eca14610247578063183a4f6e146102645780631c10893f14610279575b5f80fd5b34801561021e575f80fd5b5061023261022d36600461153b565b610662565b60405190151581526020015b60405180910390f35b348015610252575f80fd5b505f545b60405190815260200161023e565b610277610272366004611581565b6106bd565b005b6102776102873660046115b9565b6106ca565b348015610297575f80fd5b506102326102a63660046115b9565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102cc575f80fd5b506102565f5481565b6102776106e0565b3480156102e8575f80fd5b506040517f9031811100000000000000000000000000000000000000000000000000000000815260200161023e565b348015610322575f80fd5b506102566103313660046115e3565b638b78c6d8600c9081525f91909152602090205490565b348015610353575f80fd5b50610277610362366004611581565b61072d565b348015610372575f80fd5b506003546103939073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161023e565b3480156103c3575f80fd5b506102776103d2366004611646565b6107e9565b3480156103e2575f80fd5b506102776103f13660046116f0565b6108e3565b348015610401575f80fd5b506104156104103660046116f0565b610b0d565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161023e565b61027761044d3660046115b9565b610c6f565b34801561045d575f80fd5b5061047161046c3660046116f0565b610c81565b60405161023e919061177b565b348015610489575f80fd5b506102326104983660046115b9565b638b78c6d8600c9081525f9290925260209091205416151590565b610277610d6a565b610277610da3565b3480156104ce575f80fd5b50610256600281565b3480156104e2575f80fd5b50638b78c6d81954610393565b3480156104fa575f80fd5b5061025660025481565b34801561050f575f80fd5b5061023261051e36600461178d565b610db6565b34801561052e575f80fd5b5061027761053d366004611646565b610fcb565b34801561054d575f80fd5b5061023261055c3660046115e3565b60016020525f908152604090205460ff1681565b34801561057b575f80fd5b5061025660055481565b348015610590575f80fd5b5061023261059f36600461178d565b611069565b3480156105af575f80fd5b506102776105be366004611646565b61107f565b3480156105ce575f80fd5b5061025660045481565b3480156105e3575f80fd5b50610256600181565b6102776105fa3660046115e3565b61111d565b61027761060d3660046115e3565b611157565b34801561061d575f80fd5b5061023261062c3660046115e3565b61117d565b34801561063c575f80fd5b5061025661064b3660046115e3565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806106b757506106b7826111dc565b92915050565b6106c73382611231565b50565b6106d261123c565b6106dc8282611256565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161073881611262565b815f03610771576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546107969073ffffffffffffffffffffffffffffffffffffffff16333085611293565b8160025f8282546107a7919061180b565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b60026107f481611262565b83821461082d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db575f84848381811061084a5761084a61181e565b905060200201602081019061085f919061184b565b90508015156001036108a15761089c8787848181106108805761088061181e565b905060200201602081019061089591906115e3565b6001611256565b6108d2565b6108d28787848181106108b6576108b661181e565b90506020020160208101906108cb91906115e3565b6001611231565b5060010161082f565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109345760018160011c14303b1061092b5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610942838501856118c0565b80516020820151604083015192935090915f81900361098d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109ae73ffffffffffffffffffffffffffffffffffffffff8516306112f5565b905081811015610a175784516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810183905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555f8381556002839055600555610a6c33611328565b6060850151610a7c816001611370565b604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff8716917fac711f624f923566afa4d63e74d67927870a724791c9569f0143ddea22657a0d910160405180910390a25050505050508015610b08576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b1a81611262565b5f610b27858701876119dc565b90505f8160200151806020019051810190610b429190611a5b565b90508060025f828254610b559190611a72565b90915550508151600354610b829173ffffffffffffffffffffffffffffffffffffffff90911690836113b1565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c409161177b565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c7761123c565b6106dc8282611231565b60605f80610c9184860186611a85565b9250509150604051806080016040528060016002811115610cb457610cb4611ab7565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610d139151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610d519190602001611ae4565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610dab61123c565b610db45f611404565b565b5f610dbf61123c565b5f610dcc83850185611b7f565b90505f8160200151806020019051810190610de79190611a5b565b90505f610df76002546005541090565b610e2d576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f03610e3c575080610e5f565b670de0b6b3a7640000825f54610e529190611bfc565b610e5c9190611c13565b90505b60025481600554610e70919061180b565b1115610ea8576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610eb9919061180b565b92505081905550600160045f828254610ed2919061180b565b9091555050600354610efb9073ffffffffffffffffffffffffffffffffffffffff1688836113b1565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fb69161177b565b60405180910390a25060019695505050505050565b6002610fd681611262565b83821461100f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db5761106186868381811061102e5761102e61181e565b905060200201602081019061104391906115e3565b8585848181106110555761105561181e565b90506020020135611256565b600101611011565b5f6110776002546005541090565b949350505050565b600261108a81611262565b8382146110c3576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db576111158686838181106110e2576110e261181e565b90506020020160208101906110f791906115e3565b8585848181106111095761110961181e565b90506020020135611231565b6001016110c5565b61112561123c565b63389a75e1600c52805f526020600c20805442111561114b57636f5e88185f526004601cfd5b5f90556106c781611404565b61115f61123c565b8060601b61117457637448fbae5f526004601cfd5b6106c781611404565b5f8173ffffffffffffffffffffffffffffffffffffffff166111a2638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b75750638b78c6d8600c9081525f839052602090205460031615156106b7565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b757506106b78261144e565b6106dc82825f6114e4565b638b78c6d819543314610db4576382b429005f526004601cfd5b6106dc828260016114e4565b638b78c6d8195433146106c757638b78c6d8600c52335f52806020600c2054166106c7576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f5114166112e757803d873b1517106112e757637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f5114166113fa57803d853b1517106113fa576390b8ec185f526004601cfd5b505f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b7565b638b78c6d8600c52825f526020600c20805483811783611505575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f6020828403121561154b575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461157a575f80fd5b9392505050565b5f60208284031215611591575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146106c7575f80fd5b5f80604083850312156115ca575f80fd5b82356115d581611598565b946020939093013593505050565b5f602082840312156115f3575f80fd5b813561157a81611598565b5f8083601f84011261160e575f80fd5b50813567ffffffffffffffff811115611625575f80fd5b6020830191508360208260051b850101111561163f575f80fd5b9250929050565b5f805f8060408587031215611659575f80fd5b843567ffffffffffffffff81111561166f575f80fd5b61167b878288016115fe565b909550935050602085013567ffffffffffffffff81111561169a575f80fd5b6116a6878288016115fe565b95989497509550505050565b5f8083601f8401126116c2575f80fd5b50813567ffffffffffffffff8111156116d9575f80fd5b60208301915083602082850101111561163f575f80fd5b5f8060208385031215611701575f80fd5b823567ffffffffffffffff811115611717575f80fd5b611723858286016116b2565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61157a602083018461172f565b5f805f6040848603121561179f575f80fd5b83356117aa81611598565b9250602084013567ffffffffffffffff8111156117c5575f80fd5b6117d1868287016116b2565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156106b7576106b76117de565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561185b575f80fd5b8135801515811461157a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118ba576118ba61186a565b60405290565b5f60808284031280156118d1575f80fd5b506040516080810167ffffffffffffffff811182821017156118f5576118f561186a565b604052823561190381611598565b81526020838101359082015260408084013590820152606083013561192781611598565b60608201529392505050565b5f82601f830112611942575f80fd5b813567ffffffffffffffff81111561195c5761195c61186a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156119a9576119a961186a565b6040528181528382016020018510156119c0575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156119ec575f80fd5b813567ffffffffffffffff811115611a02575f80fd5b820160408185031215611a13575f80fd5b611a1b611897565b8135611a2681611598565b8152602082013567ffffffffffffffff811115611a41575f80fd5b611a4d86828501611933565b602083015250949350505050565b5f60208284031215611a6b575f80fd5b5051919050565b818103818111156106b7576106b76117de565b5f805f60608486031215611a97575f80fd5b8335611aa281611598565b95602085013595506040909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b602081525f825160038110611b20577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261107760a084018261172f565b5f60208284031215611b8f575f80fd5b813567ffffffffffffffff811115611ba5575f80fd5b820160408185031215611bb6575f80fd5b611bbe611897565b813567ffffffffffffffff811115611bd4575f80fd5b611be086828501611933565b825250602082013567ffffffffffffffff811115611a41575f80fd5b80820281158282048414176106b7576106b76117de565b5f82611c46577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea264697066735822122010e92bb170bbded5a39d9e31e19c0f4d00c38e9b3db120b41bfca6a48a497d3364736f6c634300081a0033",M5="0x60806040526004361061020f575f3560e01c806354d1f13d11610117578063d54ad2a1116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105ff578063fe9fbb8014610612578063fee81cf414610631575f80fd5b8063ec87621c146105d8578063f04e283e146105ec575f80fd5b8063d54ad2a114610570578063db09da1214610585578063dcc21361146105a4578063dcc59b6f146105c3575f80fd5b8063a4d66daf116100e7578063a4d66daf146104ef578063bb1757cf14610504578063be4994f814610523578063c884ef8314610542575f80fd5b806354d1f13d146104b3578063715018a6146104bb57806375b238fc146104c35780638da5cb5b146104d7575f80fd5b80632de94807116101a7578063439fab91116101775780634a4ee7b11161015d5780634a4ee7b11461043f5780634e7165a214610452578063514e62fc1461047e575f80fd5b8063439fab91146103d7578063474f5a44146103f6575f80fd5b80632de948071461031757806330db555f1461034857806338d52e0f146103675780634359d28a146103b8575f80fd5b80631cd64df4116101e25780631cd64df41461028c578063228cb733146102c157806325692962146102d557806328d6183b146102dd575f80fd5b806301ffc9a71461021357806307621eca14610247578063183a4f6e146102645780631c10893f14610279575b5f80fd5b34801561021e575f80fd5b5061023261022d36600461153b565b610662565b60405190151581526020015b60405180910390f35b348015610252575f80fd5b505f545b60405190815260200161023e565b610277610272366004611581565b6106bd565b005b6102776102873660046115b9565b6106ca565b348015610297575f80fd5b506102326102a63660046115b9565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102cc575f80fd5b506102565f5481565b6102776106e0565b3480156102e8575f80fd5b506040517f9031811100000000000000000000000000000000000000000000000000000000815260200161023e565b348015610322575f80fd5b506102566103313660046115e3565b638b78c6d8600c9081525f91909152602090205490565b348015610353575f80fd5b50610277610362366004611581565b61072d565b348015610372575f80fd5b506003546103939073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161023e565b3480156103c3575f80fd5b506102776103d2366004611646565b6107e9565b3480156103e2575f80fd5b506102776103f13660046116f0565b6108e3565b348015610401575f80fd5b506104156104103660046116f0565b610b0d565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161023e565b61027761044d3660046115b9565b610c6f565b34801561045d575f80fd5b5061047161046c3660046116f0565b610c81565b60405161023e919061177b565b348015610489575f80fd5b506102326104983660046115b9565b638b78c6d8600c9081525f9290925260209091205416151590565b610277610d6a565b610277610da3565b3480156104ce575f80fd5b50610256600281565b3480156104e2575f80fd5b50638b78c6d81954610393565b3480156104fa575f80fd5b5061025660025481565b34801561050f575f80fd5b5061023261051e36600461178d565b610db6565b34801561052e575f80fd5b5061027761053d366004611646565b610fcb565b34801561054d575f80fd5b5061023261055c3660046115e3565b60016020525f908152604090205460ff1681565b34801561057b575f80fd5b5061025660055481565b348015610590575f80fd5b5061023261059f36600461178d565b611069565b3480156105af575f80fd5b506102776105be366004611646565b61107f565b3480156105ce575f80fd5b5061025660045481565b3480156105e3575f80fd5b50610256600181565b6102776105fa3660046115e3565b61111d565b61027761060d3660046115e3565b611157565b34801561061d575f80fd5b5061023261062c3660046115e3565b61117d565b34801561063c575f80fd5b5061025661064b3660046115e3565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806106b757506106b7826111dc565b92915050565b6106c73382611231565b50565b6106d261123c565b6106dc8282611256565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161073881611262565b815f03610771576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546107969073ffffffffffffffffffffffffffffffffffffffff16333085611293565b8160025f8282546107a7919061180b565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b60026107f481611262565b83821461082d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db575f84848381811061084a5761084a61181e565b905060200201602081019061085f919061184b565b90508015156001036108a15761089c8787848181106108805761088061181e565b905060200201602081019061089591906115e3565b6001611256565b6108d2565b6108d28787848181106108b6576108b661181e565b90506020020160208101906108cb91906115e3565b6001611231565b5060010161082f565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109345760018160011c14303b1061092b5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610942838501856118c0565b80516020820151604083015192935090915f81900361098d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109ae73ffffffffffffffffffffffffffffffffffffffff8516306112f5565b905081811015610a175784516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810183905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555f8381556002839055600555610a6c33611328565b6060850151610a7c816001611370565b604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff8716917fac711f624f923566afa4d63e74d67927870a724791c9569f0143ddea22657a0d910160405180910390a25050505050508015610b08576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b1a81611262565b5f610b27858701876119dc565b90505f8160200151806020019051810190610b429190611a5b565b90508060025f828254610b559190611a72565b90915550508151600354610b829173ffffffffffffffffffffffffffffffffffffffff90911690836113b1565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c409161177b565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c7761123c565b6106dc8282611231565b60605f80610c9184860186611a85565b9250509150604051806080016040528060016002811115610cb457610cb4611ab7565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610d139151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610d519190602001611ae4565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610dab61123c565b610db45f611404565b565b5f610dbf61123c565b5f610dcc83850185611b7f565b90505f8160200151806020019051810190610de79190611a5b565b90505f610df76002546005541090565b610e2d576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f03610e3c575080610e5f565b670de0b6b3a7640000825f54610e529190611bfc565b610e5c9190611c13565b90505b60025481600554610e70919061180b565b1115610ea8576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610eb9919061180b565b92505081905550600160045f828254610ed2919061180b565b9091555050600354610efb9073ffffffffffffffffffffffffffffffffffffffff1688836113b1565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fb69161177b565b60405180910390a25060019695505050505050565b6002610fd681611262565b83821461100f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db5761106186868381811061102e5761102e61181e565b905060200201602081019061104391906115e3565b8585848181106110555761105561181e565b90506020020135611256565b600101611011565b5f6110776002546005541090565b949350505050565b600261108a81611262565b8382146110c3576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db576111158686838181106110e2576110e261181e565b90506020020160208101906110f791906115e3565b8585848181106111095761110961181e565b90506020020135611231565b6001016110c5565b61112561123c565b63389a75e1600c52805f526020600c20805442111561114b57636f5e88185f526004601cfd5b5f90556106c781611404565b61115f61123c565b8060601b61117457637448fbae5f526004601cfd5b6106c781611404565b5f8173ffffffffffffffffffffffffffffffffffffffff166111a2638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b75750638b78c6d8600c9081525f839052602090205460031615156106b7565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b757506106b78261144e565b6106dc82825f6114e4565b638b78c6d819543314610db4576382b429005f526004601cfd5b6106dc828260016114e4565b638b78c6d8195433146106c757638b78c6d8600c52335f52806020600c2054166106c7576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f5114166112e757803d873b1517106112e757637939f4245f526004601cfd5b505f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f5114166113fa57803d853b1517106113fa576390b8ec185f526004601cfd5b505f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b7565b638b78c6d8600c52825f526020600c20805483811783611505575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f6020828403121561154b575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461157a575f80fd5b9392505050565b5f60208284031215611591575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146106c7575f80fd5b5f80604083850312156115ca575f80fd5b82356115d581611598565b946020939093013593505050565b5f602082840312156115f3575f80fd5b813561157a81611598565b5f8083601f84011261160e575f80fd5b50813567ffffffffffffffff811115611625575f80fd5b6020830191508360208260051b850101111561163f575f80fd5b9250929050565b5f805f8060408587031215611659575f80fd5b843567ffffffffffffffff81111561166f575f80fd5b61167b878288016115fe565b909550935050602085013567ffffffffffffffff81111561169a575f80fd5b6116a6878288016115fe565b95989497509550505050565b5f8083601f8401126116c2575f80fd5b50813567ffffffffffffffff8111156116d9575f80fd5b60208301915083602082850101111561163f575f80fd5b5f8060208385031215611701575f80fd5b823567ffffffffffffffff811115611717575f80fd5b611723858286016116b2565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61157a602083018461172f565b5f805f6040848603121561179f575f80fd5b83356117aa81611598565b9250602084013567ffffffffffffffff8111156117c5575f80fd5b6117d1868287016116b2565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156106b7576106b76117de565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561185b575f80fd5b8135801515811461157a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118ba576118ba61186a565b60405290565b5f60808284031280156118d1575f80fd5b506040516080810167ffffffffffffffff811182821017156118f5576118f561186a565b604052823561190381611598565b81526020838101359082015260408084013590820152606083013561192781611598565b60608201529392505050565b5f82601f830112611942575f80fd5b813567ffffffffffffffff81111561195c5761195c61186a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156119a9576119a961186a565b6040528181528382016020018510156119c0575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156119ec575f80fd5b813567ffffffffffffffff811115611a02575f80fd5b820160408185031215611a13575f80fd5b611a1b611897565b8135611a2681611598565b8152602082013567ffffffffffffffff811115611a41575f80fd5b611a4d86828501611933565b602083015250949350505050565b5f60208284031215611a6b575f80fd5b5051919050565b818103818111156106b7576106b76117de565b5f805f60608486031215611a97575f80fd5b8335611aa281611598565b95602085013595506040909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b602081525f825160038110611b20577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261107760a084018261172f565b5f60208284031215611b8f575f80fd5b813567ffffffffffffffff811115611ba5575f80fd5b820160408185031215611bb6575f80fd5b611bbe611897565b813567ffffffffffffffff811115611bd4575f80fd5b611be086828501611933565b825250602082013567ffffffffffffffff811115611a41575f80fd5b80820281158282048414176106b7576106b76117de565b5f82611c46577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea264697066735822122010e92bb170bbded5a39d9e31e19c0f4d00c38e9b3db120b41bfca6a48a497d3364736f6c634300081a0033",I5={},x5={},D0={_format:T5,contractName:w5,sourceName:h5,abi:v5,bytecode:g5,deployedBytecode:M5,linkReferences:I5,deployedLinkReferences:x5},A5="hh-sol-artifact-1",E5="ERC1155Incentive",R5="contracts/incentives/ERC1155Incentive.sol",O5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"enum AERC1155Incentive.Strategy",name:"strategy",type:"uint8"},{indexed:!1,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC1155IncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"extraData",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",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:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"strategy",outputs:[{internalType:"enum AERC1155Incentive.Strategy",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],C5="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612419806100895f395ff3fe60806040526004361061025d575f3560e01c8063609d33341161014b578063cc3c0f06116100c6578063f04e283e1161007c578063f2fde38b11610062578063f2fde38b14610719578063fe9fbb801461072c578063fee81cf41461074b575f80fd5b8063f04e283e146106c1578063f23a6e61146106d4575f80fd5b8063dcc21361116100ac578063dcc2136114610679578063dcc59b6f14610698578063ec87621c146106ad575f80fd5b8063cc3c0f061461062c578063db09da121461065a575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf146105a7578063bc197c81146105c6578063be4994f81461060d575f80fd5b8063a4d66daf1461056c578063a8c62e7614610581575f80fd5b8063609d333414610524578063715018a61461053857806375b238fc146105405780638da5cb5b14610554575f80fd5b80632de94807116101db578063474f5a44116101ab5780634e7165a2116101915780634e7165a2146104bb578063514e62fc146104e757806354d1f13d1461051c575f80fd5b8063474f5a441461045f5780634a4ee7b1146104a8575f80fd5b80632de948071461039f57806338d52e0f146103d05780634359d28a14610421578063439fab9114610440575f80fd5b80631c10893f11610230578063228cb73311610216578063228cb73314610324578063256929621461033857806328d6183b14610340575f80fd5b80631c10893f146102dc5780631cd64df4146102ef575f80fd5b806301ffc9a71461026157806307621eca1461029557806317d70f7c146102b2578063183a4f6e146102c7575b5f80fd5b34801561026c575f80fd5b5061028061027b366004611760565b61077c565b60405190151581526020015b60405180910390f35b3480156102a0575f80fd5b505f545b60405190815260200161028c565b3480156102bd575f80fd5b506102a460045481565b6102da6102d536600461179f565b610823565b005b6102da6102ea3660046117e7565b610830565b3480156102fa575f80fd5b506102806103093660046117e7565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561032f575f80fd5b506102a45f5481565b6102da610846565b34801561034b575f80fd5b507f9e4fa10b000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161028c565b3480156103aa575f80fd5b506102a46103b9366004611811565b638b78c6d8600c9081525f91909152602090205490565b3480156103db575f80fd5b506006546103fc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028c565b34801561042c575f80fd5b506102da61043b366004611874565b610893565b34801561044b575f80fd5b506102da61045a36600461191e565b61098d565b34801561046a575f80fd5b5061047e61047936600461191e565b610ced565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161028c565b6102da6104b63660046117e7565b610ede565b3480156104c6575f80fd5b506104da6104d536600461191e565b610ef0565b60405161028c919061198b565b3480156104f2575f80fd5b506102806105013660046117e7565b638b78c6d8600c9081525f9290925260209091205416151590565b6102da610fbf565b34801561052f575f80fd5b506104da610ff8565b6102da611084565b34801561054b575f80fd5b506102a4600281565b34801561055f575f80fd5b50638b78c6d819546103fc565b348015610577575f80fd5b506102a460035481565b34801561058c575f80fd5b5060025461059a9060ff1681565b60405161028c91906119de565b3480156105b2575f80fd5b506102806105c13660046119ec565b611097565b3480156105d1575f80fd5b5061036e6105e0366004611a3d565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610618575f80fd5b506102da610627366004611874565b611275565b348015610637575f80fd5b5061028061064636600461179f565b60016020525f908152604090205460ff1681565b348015610665575f80fd5b506102806106743660046119ec565b611313565b348015610684575f80fd5b506102da610693366004611874565b611333565b3480156106a3575f80fd5b506102a460075481565b3480156106b8575f80fd5b506102a4600181565b6102da6106cf366004611811565b6113d1565b3480156106df575f80fd5b5061036e6106ee366004611b00565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102da610727366004611811565b61140b565b348015610737575f80fd5b50610280610746366004611811565b611431565b348015610756575f80fd5b506102a4610765366004611811565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f9e4fa10b00000000000000000000000000000000000000000000000000000000148061080e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061081d575061081d82611490565b92915050565b61082d33826114e5565b50565b6108386114f0565b610842828261150a565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261089e81611516565b8382146108d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985575f8484838181106108f4576108f4611b77565b90506020020160208101906109099190611ba4565b905080151560010361094b5761094687878481811061092a5761092a611b77565b905060200201602081019061093f9190611811565b600161150a565b61097c565b61097c87878481811061096057610960611b77565b90506020020160208101906109759190611811565b60016114e5565b506001016108d9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109de5760018160011c14303b106109d55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6109ec83850185611cc7565b60015f81905590915081602001516001811115610a0b57610a0b61199d565b03610a42576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80606001515f03610a7f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160408083015190517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091525f9173ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa158015610af5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b199190611d81565b90508160600151811015610b8a57815160608301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b8151600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020820151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610c0e57610c0e61199d565b0217905550604082015160045560608201516003556080820151600590610c359082611e34565b50610c3f33611547565b610c4e8260a00151600161158f565b60065460025460045460035460405173ffffffffffffffffffffffffffffffffffffffff909416937fab00ab125656c990b2b193b6b0915d55011716161bbb600d22a37eeaf5c2dd5c93610ca99360ff909116929091611f2d565b60405180910390a250508015610ce8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cfa81611516565b5f610d0785870187611f4c565b90505f8160200151806020019051810190610d229190611d81565b9050600754600354610d349190611ff8565b811115610d8e573382604051602001610d4d919061200b565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610b81929160040161204d565b8060035f828254610d9f9190611ff8565b909155505060065482516004805460208601516040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9095169463f242432a94610e0a943094919391928992910161207b565b5f604051808303815f87803b158015610e21575f80fd5b505af1158015610e33573d5f803e3d5ffd5b5050835160065460045460208088015160405173ffffffffffffffffffffffffffffffffffffffff80871698507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39750610e95969516949392899291016120dc565b60408051601f1981840301815290829052610eaf9161198b565b60405180910390a260065490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610ee66114f0565b61084282826114e5565b60605f610eff83850185611cc7565b60408051608081019091529091508060028152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806060016040528084604001518152602001846060015181526020018460800151815250604051602001610f87919061215b565b60408051601f19818403018152918152915251610fa79190602001612189565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6005805461100590611d98565b80601f016020809104026020016040519081016040528092919081815260200182805461103190611d98565b801561107c5780601f106110535761010080835404028352916020019161107c565b820191905f5260205f20905b81548152906001019060200180831161105f57829003601f168201915b505050505081565b61108c6114f0565b6110955f6115d0565b565b5f6110a06114f0565b5f6110ab848461161a565b90505f60025460ff1660018111156110c5576110c561199d565b03611269576110d38161164d565b611109576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078054905f611118836121ff565b90915550505f8181526001602081905260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821790556006546004805493517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169363f242432a936111b59330938c9392918c918c9101612236565b5f604051808303815f87803b1580156111cc575f80fd5b505af11580156111de573d5f803e3d5ffd5b505060065460045460405173ffffffffffffffffffffffffffffffffffffffff808b1695507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d3945061123d9316918a916001908b908b906020016122ac565b60408051601f19818403018152908290526112579161198b565b60405180910390a2600191505061126e565b5f9150505b9392505050565b600261128081611516565b8382146112b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109855761130b8686838181106112d8576112d8611b77565b90506020020160208101906112ed9190611811565b8585848181106112ff576112ff611b77565b9050602002013561150a565b6001016112bb565b5f8061131f848461161a565b905061132a8161164d565b95945050505050565b600261133e81611516565b838214611377576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985576113c986868381811061139657611396611b77565b90506020020160208101906113ab9190611811565b8585848181106113bd576113bd611b77565b905060200201356114e5565b600101611379565b6113d96114f0565b63389a75e1600c52805f526020600c2080544211156113ff57636f5e88185f526004601cfd5b5f905561082d816115d0565b6114136114f0565b8060601b61142857637448fbae5f526004601cfd5b61082d816115d0565b5f8173ffffffffffffffffffffffffffffffffffffffff16611456638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061081d5750638b78c6d8600c9081525f8390526020902054600316151561081d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061081d575061081d82611673565b61084282825f611709565b638b78c6d819543314611095576382b429005f526004601cfd5b61084282826001611709565b638b78c6d81954331461082d57638b78c6d8600c52335f52806020600c20541661082d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f8061162883850185612324565b90505f816020015180602001905181019061164391906123a1565b5195945050505050565b5f8181526001602052604081205460ff1615801561081d57506003546007541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061081d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461081d565b638b78c6d8600c52825f526020600c2080548381178361172a575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611770575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461126e575f80fd5b5f602082840312156117af575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461082d575f80fd5b80356117e2816117b6565b919050565b5f80604083850312156117f8575f80fd5b8235611803816117b6565b946020939093013593505050565b5f60208284031215611821575f80fd5b813561126e816117b6565b5f8083601f84011261183c575f80fd5b50813567ffffffffffffffff811115611853575f80fd5b6020830191508360208260051b850101111561186d575f80fd5b9250929050565b5f805f8060408587031215611887575f80fd5b843567ffffffffffffffff81111561189d575f80fd5b6118a98782880161182c565b909550935050602085013567ffffffffffffffff8111156118c8575f80fd5b6118d48782880161182c565b95989497509550505050565b5f8083601f8401126118f0575f80fd5b50813567ffffffffffffffff811115611907575f80fd5b60208301915083602082850101111561186d575f80fd5b5f806020838503121561192f575f80fd5b823567ffffffffffffffff811115611945575f80fd5b611951858286016118e0565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61126e602083018461195d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106119da576119da61199d565b9052565b6020810161081d82846119ca565b5f805f604084860312156119fe575f80fd5b8335611a09816117b6565b9250602084013567ffffffffffffffff811115611a24575f80fd5b611a30868287016118e0565b9497909650939450505050565b5f805f805f805f8060a0898b031215611a54575f80fd5b8835611a5f816117b6565b97506020890135611a6f816117b6565b9650604089013567ffffffffffffffff811115611a8a575f80fd5b611a968b828c0161182c565b909750955050606089013567ffffffffffffffff811115611ab5575f80fd5b611ac18b828c0161182c565b909550935050608089013567ffffffffffffffff811115611ae0575f80fd5b611aec8b828c016118e0565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215611b15575f80fd5b8635611b20816117b6565b95506020870135611b30816117b6565b94506040870135935060608701359250608087013567ffffffffffffffff811115611b59575f80fd5b611b6589828a016118e0565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611bb4575f80fd5b8135801515811461126e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff81118282101715611c1357611c13611bc3565b60405290565b6040805190810167ffffffffffffffff81118282101715611c1357611c13611bc3565b5f82601f830112611c4b575f80fd5b813567ffffffffffffffff811115611c6557611c65611bc3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611c9457611c94611bc3565b604052818152838201602001851015611cab575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611cd7575f80fd5b813567ffffffffffffffff811115611ced575f80fd5b820160c08185031215611cfe575f80fd5b611d06611bf0565b8135611d11816117b6565b8152602082013560028110611d24575f80fd5b60208201526040828101359082015260608083013590820152608082013567ffffffffffffffff811115611d56575f80fd5b611d6286828501611c3c565b608083015250611d7460a083016117d7565b60a0820152949350505050565b5f60208284031215611d91575f80fd5b5051919050565b600181811c90821680611dac57607f821691505b602082108103611de3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610ce857805f5260205f20601f840160051c81016020851015611e0e5750805b601f840160051c820191505b81811015611e2d575f8155600101611e1a565b5050505050565b815167ffffffffffffffff811115611e4e57611e4e611bc3565b611e6281611e5c8454611d98565b84611de9565b6020601f821160018114611eb3575f8315611e7d5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611e2d565b5f84815260208120601f198516915b82811015611ee25787850151825560209485019460019092019101611ec2565b5084821015611f1e57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60608101611f3b82866119ca565b602082019390935260400152919050565b5f60208284031215611f5c575f80fd5b813567ffffffffffffffff811115611f72575f80fd5b820160408185031215611f83575f80fd5b611f8b611c19565b8135611f96816117b6565b8152602082013567ffffffffffffffff811115611fb1575f80fd5b611fbd86828501611c3c565b602083015250949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561081d5761081d611fcb565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612045606084018261195d565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f612045604083018461195d565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f6120d160a083018461195d565b979650505050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1660148201528360288201528260488201525f82518060208501606885015e5f92016068019182525095945050505050565b6020815281516020820152602082015160408201525f6040830151606080840152612045608084018261195d565b602081525f8251600381106121a0576121a061199d565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261204560a084018261195d565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222f5761222f611fcb565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015284604082015283606082015260a060808201528160a0820152818360c08301375f81830160c090810191909152601f909201601f1916010195945050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008760601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b166014820152846028820152836048820152818360688301375f910160680190815295945050505050565b5f60208284031215612334575f80fd5b813567ffffffffffffffff81111561234a575f80fd5b82016040818503121561235b575f80fd5b612363611c19565b813567ffffffffffffffff811115612379575f80fd5b61238586828501611c3c565b825250602082013567ffffffffffffffff811115611fb1575f80fd5b5f60208284031280156123b2575f80fd5b506040516020810167ffffffffffffffff811182821017156123d6576123d6611bc3565b604052915182525091905056fea2646970667358221220761e905cdd9bde1957eb79e432ae3080fb880370310fce1a6b555b31b6b3e53364736f6c634300081a0033",_5="0x60806040526004361061025d575f3560e01c8063609d33341161014b578063cc3c0f06116100c6578063f04e283e1161007c578063f2fde38b11610062578063f2fde38b14610719578063fe9fbb801461072c578063fee81cf41461074b575f80fd5b8063f04e283e146106c1578063f23a6e61146106d4575f80fd5b8063dcc21361116100ac578063dcc2136114610679578063dcc59b6f14610698578063ec87621c146106ad575f80fd5b8063cc3c0f061461062c578063db09da121461065a575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf146105a7578063bc197c81146105c6578063be4994f81461060d575f80fd5b8063a4d66daf1461056c578063a8c62e7614610581575f80fd5b8063609d333414610524578063715018a61461053857806375b238fc146105405780638da5cb5b14610554575f80fd5b80632de94807116101db578063474f5a44116101ab5780634e7165a2116101915780634e7165a2146104bb578063514e62fc146104e757806354d1f13d1461051c575f80fd5b8063474f5a441461045f5780634a4ee7b1146104a8575f80fd5b80632de948071461039f57806338d52e0f146103d05780634359d28a14610421578063439fab9114610440575f80fd5b80631c10893f11610230578063228cb73311610216578063228cb73314610324578063256929621461033857806328d6183b14610340575f80fd5b80631c10893f146102dc5780631cd64df4146102ef575f80fd5b806301ffc9a71461026157806307621eca1461029557806317d70f7c146102b2578063183a4f6e146102c7575b5f80fd5b34801561026c575f80fd5b5061028061027b366004611760565b61077c565b60405190151581526020015b60405180910390f35b3480156102a0575f80fd5b505f545b60405190815260200161028c565b3480156102bd575f80fd5b506102a460045481565b6102da6102d536600461179f565b610823565b005b6102da6102ea3660046117e7565b610830565b3480156102fa575f80fd5b506102806103093660046117e7565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561032f575f80fd5b506102a45f5481565b6102da610846565b34801561034b575f80fd5b507f9e4fa10b000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161028c565b3480156103aa575f80fd5b506102a46103b9366004611811565b638b78c6d8600c9081525f91909152602090205490565b3480156103db575f80fd5b506006546103fc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028c565b34801561042c575f80fd5b506102da61043b366004611874565b610893565b34801561044b575f80fd5b506102da61045a36600461191e565b61098d565b34801561046a575f80fd5b5061047e61047936600461191e565b610ced565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161028c565b6102da6104b63660046117e7565b610ede565b3480156104c6575f80fd5b506104da6104d536600461191e565b610ef0565b60405161028c919061198b565b3480156104f2575f80fd5b506102806105013660046117e7565b638b78c6d8600c9081525f9290925260209091205416151590565b6102da610fbf565b34801561052f575f80fd5b506104da610ff8565b6102da611084565b34801561054b575f80fd5b506102a4600281565b34801561055f575f80fd5b50638b78c6d819546103fc565b348015610577575f80fd5b506102a460035481565b34801561058c575f80fd5b5060025461059a9060ff1681565b60405161028c91906119de565b3480156105b2575f80fd5b506102806105c13660046119ec565b611097565b3480156105d1575f80fd5b5061036e6105e0366004611a3d565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610618575f80fd5b506102da610627366004611874565b611275565b348015610637575f80fd5b5061028061064636600461179f565b60016020525f908152604090205460ff1681565b348015610665575f80fd5b506102806106743660046119ec565b611313565b348015610684575f80fd5b506102da610693366004611874565b611333565b3480156106a3575f80fd5b506102a460075481565b3480156106b8575f80fd5b506102a4600181565b6102da6106cf366004611811565b6113d1565b3480156106df575f80fd5b5061036e6106ee366004611b00565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102da610727366004611811565b61140b565b348015610737575f80fd5b50610280610746366004611811565b611431565b348015610756575f80fd5b506102a4610765366004611811565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f9e4fa10b00000000000000000000000000000000000000000000000000000000148061080e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061081d575061081d82611490565b92915050565b61082d33826114e5565b50565b6108386114f0565b610842828261150a565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261089e81611516565b8382146108d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985575f8484838181106108f4576108f4611b77565b90506020020160208101906109099190611ba4565b905080151560010361094b5761094687878481811061092a5761092a611b77565b905060200201602081019061093f9190611811565b600161150a565b61097c565b61097c87878481811061096057610960611b77565b90506020020160208101906109759190611811565b60016114e5565b506001016108d9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109de5760018160011c14303b106109d55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6109ec83850185611cc7565b60015f81905590915081602001516001811115610a0b57610a0b61199d565b03610a42576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80606001515f03610a7f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160408083015190517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091525f9173ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa158015610af5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b199190611d81565b90508160600151811015610b8a57815160608301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b8151600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020820151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610c0e57610c0e61199d565b0217905550604082015160045560608201516003556080820151600590610c359082611e34565b50610c3f33611547565b610c4e8260a00151600161158f565b60065460025460045460035460405173ffffffffffffffffffffffffffffffffffffffff909416937fab00ab125656c990b2b193b6b0915d55011716161bbb600d22a37eeaf5c2dd5c93610ca99360ff909116929091611f2d565b60405180910390a250508015610ce8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cfa81611516565b5f610d0785870187611f4c565b90505f8160200151806020019051810190610d229190611d81565b9050600754600354610d349190611ff8565b811115610d8e573382604051602001610d4d919061200b565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610b81929160040161204d565b8060035f828254610d9f9190611ff8565b909155505060065482516004805460208601516040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9095169463f242432a94610e0a943094919391928992910161207b565b5f604051808303815f87803b158015610e21575f80fd5b505af1158015610e33573d5f803e3d5ffd5b5050835160065460045460208088015160405173ffffffffffffffffffffffffffffffffffffffff80871698507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39750610e95969516949392899291016120dc565b60408051601f1981840301815290829052610eaf9161198b565b60405180910390a260065490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610ee66114f0565b61084282826114e5565b60605f610eff83850185611cc7565b60408051608081019091529091508060028152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806060016040528084604001518152602001846060015181526020018460800151815250604051602001610f87919061215b565b60408051601f19818403018152918152915251610fa79190602001612189565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6005805461100590611d98565b80601f016020809104026020016040519081016040528092919081815260200182805461103190611d98565b801561107c5780601f106110535761010080835404028352916020019161107c565b820191905f5260205f20905b81548152906001019060200180831161105f57829003601f168201915b505050505081565b61108c6114f0565b6110955f6115d0565b565b5f6110a06114f0565b5f6110ab848461161a565b90505f60025460ff1660018111156110c5576110c561199d565b03611269576110d38161164d565b611109576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078054905f611118836121ff565b90915550505f8181526001602081905260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821790556006546004805493517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169363f242432a936111b59330938c9392918c918c9101612236565b5f604051808303815f87803b1580156111cc575f80fd5b505af11580156111de573d5f803e3d5ffd5b505060065460045460405173ffffffffffffffffffffffffffffffffffffffff808b1695507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d3945061123d9316918a916001908b908b906020016122ac565b60408051601f19818403018152908290526112579161198b565b60405180910390a2600191505061126e565b5f9150505b9392505050565b600261128081611516565b8382146112b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109855761130b8686838181106112d8576112d8611b77565b90506020020160208101906112ed9190611811565b8585848181106112ff576112ff611b77565b9050602002013561150a565b6001016112bb565b5f8061131f848461161a565b905061132a8161164d565b95945050505050565b600261133e81611516565b838214611377576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985576113c986868381811061139657611396611b77565b90506020020160208101906113ab9190611811565b8585848181106113bd576113bd611b77565b905060200201356114e5565b600101611379565b6113d96114f0565b63389a75e1600c52805f526020600c2080544211156113ff57636f5e88185f526004601cfd5b5f905561082d816115d0565b6114136114f0565b8060601b61142857637448fbae5f526004601cfd5b61082d816115d0565b5f8173ffffffffffffffffffffffffffffffffffffffff16611456638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061081d5750638b78c6d8600c9081525f8390526020902054600316151561081d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061081d575061081d82611673565b61084282825f611709565b638b78c6d819543314611095576382b429005f526004601cfd5b61084282826001611709565b638b78c6d81954331461082d57638b78c6d8600c52335f52806020600c20541661082d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f8061162883850185612324565b90505f816020015180602001905181019061164391906123a1565b5195945050505050565b5f8181526001602052604081205460ff1615801561081d57506003546007541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061081d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461081d565b638b78c6d8600c52825f526020600c2080548381178361172a575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611770575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461126e575f80fd5b5f602082840312156117af575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461082d575f80fd5b80356117e2816117b6565b919050565b5f80604083850312156117f8575f80fd5b8235611803816117b6565b946020939093013593505050565b5f60208284031215611821575f80fd5b813561126e816117b6565b5f8083601f84011261183c575f80fd5b50813567ffffffffffffffff811115611853575f80fd5b6020830191508360208260051b850101111561186d575f80fd5b9250929050565b5f805f8060408587031215611887575f80fd5b843567ffffffffffffffff81111561189d575f80fd5b6118a98782880161182c565b909550935050602085013567ffffffffffffffff8111156118c8575f80fd5b6118d48782880161182c565b95989497509550505050565b5f8083601f8401126118f0575f80fd5b50813567ffffffffffffffff811115611907575f80fd5b60208301915083602082850101111561186d575f80fd5b5f806020838503121561192f575f80fd5b823567ffffffffffffffff811115611945575f80fd5b611951858286016118e0565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61126e602083018461195d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106119da576119da61199d565b9052565b6020810161081d82846119ca565b5f805f604084860312156119fe575f80fd5b8335611a09816117b6565b9250602084013567ffffffffffffffff811115611a24575f80fd5b611a30868287016118e0565b9497909650939450505050565b5f805f805f805f8060a0898b031215611a54575f80fd5b8835611a5f816117b6565b97506020890135611a6f816117b6565b9650604089013567ffffffffffffffff811115611a8a575f80fd5b611a968b828c0161182c565b909750955050606089013567ffffffffffffffff811115611ab5575f80fd5b611ac18b828c0161182c565b909550935050608089013567ffffffffffffffff811115611ae0575f80fd5b611aec8b828c016118e0565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215611b15575f80fd5b8635611b20816117b6565b95506020870135611b30816117b6565b94506040870135935060608701359250608087013567ffffffffffffffff811115611b59575f80fd5b611b6589828a016118e0565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611bb4575f80fd5b8135801515811461126e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff81118282101715611c1357611c13611bc3565b60405290565b6040805190810167ffffffffffffffff81118282101715611c1357611c13611bc3565b5f82601f830112611c4b575f80fd5b813567ffffffffffffffff811115611c6557611c65611bc3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611c9457611c94611bc3565b604052818152838201602001851015611cab575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611cd7575f80fd5b813567ffffffffffffffff811115611ced575f80fd5b820160c08185031215611cfe575f80fd5b611d06611bf0565b8135611d11816117b6565b8152602082013560028110611d24575f80fd5b60208201526040828101359082015260608083013590820152608082013567ffffffffffffffff811115611d56575f80fd5b611d6286828501611c3c565b608083015250611d7460a083016117d7565b60a0820152949350505050565b5f60208284031215611d91575f80fd5b5051919050565b600181811c90821680611dac57607f821691505b602082108103611de3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610ce857805f5260205f20601f840160051c81016020851015611e0e5750805b601f840160051c820191505b81811015611e2d575f8155600101611e1a565b5050505050565b815167ffffffffffffffff811115611e4e57611e4e611bc3565b611e6281611e5c8454611d98565b84611de9565b6020601f821160018114611eb3575f8315611e7d5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611e2d565b5f84815260208120601f198516915b82811015611ee25787850151825560209485019460019092019101611ec2565b5084821015611f1e57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60608101611f3b82866119ca565b602082019390935260400152919050565b5f60208284031215611f5c575f80fd5b813567ffffffffffffffff811115611f72575f80fd5b820160408185031215611f83575f80fd5b611f8b611c19565b8135611f96816117b6565b8152602082013567ffffffffffffffff811115611fb1575f80fd5b611fbd86828501611c3c565b602083015250949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561081d5761081d611fcb565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612045606084018261195d565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f612045604083018461195d565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f6120d160a083018461195d565b979650505050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1660148201528360288201528260488201525f82518060208501606885015e5f92016068019182525095945050505050565b6020815281516020820152602082015160408201525f6040830151606080840152612045608084018261195d565b602081525f8251600381106121a0576121a061199d565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261204560a084018261195d565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222f5761222f611fcb565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015284604082015283606082015260a060808201528160a0820152818360c08301375f81830160c090810191909152601f909201601f1916010195945050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008760601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b166014820152846028820152836048820152818360688301375f910160680190815295945050505050565b5f60208284031215612334575f80fd5b813567ffffffffffffffff81111561234a575f80fd5b82016040818503121561235b575f80fd5b612363611c19565b813567ffffffffffffffff811115612379575f80fd5b61238586828501611c3c565b825250602082013567ffffffffffffffff811115611fb1575f80fd5b5f60208284031280156123b2575f80fd5b506040516020810167ffffffffffffffff811182821017156123d6576123d6611bc3565b604052915182525091905056fea2646970667358221220761e905cdd9bde1957eb79e432ae3080fb880370310fce1a6b555b31b6b3e53364736f6c634300081a0033",z5={},B5={},G0={_format:A5,contractName:E5,sourceName:R5,abi:O5,bytecode:C5,deployedBytecode:_5,linkReferences:z5,deployedLinkReferences:B5},N5="hh-sol-artifact-1",P5="PointsIncentive",$5="contracts/incentives/PointsIncentive.sol",L5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"venue",type:"address"},{indexed:!1,internalType:"bytes4",name:"selector",type:"bytes4"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"PointsIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"pure",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],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:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"venue",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}],H5="0x6080604052348015600e575f80fd5b5060156019565b607c565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b6001600160401b03808260011c146077578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6113ca806100895f395ff3fe6080604052600436106101af575f3560e01c8063514e62fc116100e7578063c884ef8311610087578063ea3d508a11610062578063ea3d508a14610543578063f04e283e1461055c578063f2fde38b1461056f578063fee81cf414610582575f80fd5b8063c884ef83146104e1578063db09da121461050f578063dcc59b6f1461052e575f80fd5b80638da5cb5b116100c25780638da5cb5b1461044e578063a270a73714610481578063a4d66daf146104ad578063bb1757cf146104c2575f80fd5b8063514e62fc1461040957806354d1f13d1461043e578063715018a614610446575f80fd5b806328d6183b11610152578063439fab911161012d578063439fab9114610354578063474f5a44146103735780634a4ee7b1146103bc5780634e7165a2146103cf575f80fd5b806328d6183b1461027d5780632de94807146102dc57806338d52e0f1461030d575f80fd5b80631c10893f1161018d5780631c10893f146102195780631cd64df41461022c578063228cb733146102615780632569296214610275575f80fd5b806301ffc9a7146101b357806307621eca146101e7578063183a4f6e14610204575b5f80fd5b3480156101be575f80fd5b506101d26101cd36600461108b565b6105b3565b60405190151581526020015b60405180910390f35b3480156101f2575f80fd5b505f545b6040519081526020016101de565b6102176102123660046110ab565b61060e565b005b6102176102273660046110e3565b61061b565b348015610237575f80fd5b506101d26102463660046110e3565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561026c575f80fd5b506101f65f5481565b610217610631565b348015610288575f80fd5b507f0d36a40d000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101de565b3480156102e7575f80fd5b506101f66102f636600461110d565b638b78c6d8600c9081525f91909152602090205490565b348015610318575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b34801561035f575f80fd5b5061021761036e36600461116d565b61067e565b34801561037e575f80fd5b5061039261038d36600461116d565b610890565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016101de565b6102176103ca3660046110e3565b6108c4565b3480156103da575f80fd5b506103fc6103e936600461116d565b5050604080515f81526020810190915290565b6040516101de91906111ac565b348015610414575f80fd5b506101d26104233660046110e3565b638b78c6d8600c9081525f9290925260209091205416151590565b6102176108d6565b61021761090f565b348015610459575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275461032f565b34801561048c575f80fd5b5060025461032f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104b8575f80fd5b506101f660035481565b3480156104cd575f80fd5b506101d26104dc3660046111ff565b610922565b3480156104ec575f80fd5b506101d26104fb36600461110d565b60016020525f908152604090205460ff1681565b34801561051a575f80fd5b506101d26105293660046111ff565b610d52565b348015610539575f80fd5b506101f660055481565b34801561054e575f80fd5b506004546102ab9060e01b81565b61021761056a36600461110d565b610d64565b61021761057d36600461110d565b610d9e565b34801561058d575f80fd5b506101f661059c36600461110d565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f0d36a40d000000000000000000000000000000000000000000000000000000001480610608575061060882610dc4565b92915050565b6106183382610e19565b50565b610623610e24565b61062d8282610e59565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156106cf5760018160011c14303b106106c65763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6106dd83850185611250565b905080604001515f14806106f357506060810151155b1561072a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020810151600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e09290921c91909117905560408101515f5560608101516003556107bf33610e65565b805f015173ffffffffffffffffffffffffffffffffffffffff167fef49c8fd80435c15980f0f55660ffaac9417e5843768f7f21566cfad2d19bfe782602001518360400151846060015160405161084d939291907fffffffff000000000000000000000000000000000000000000000000000000009390931683526020830191909152604082015260600190565b60405180910390a250801561088b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108cc610e24565b61062d8282610e19565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610917610e24565b6109205f610ec8565b565b5f61092b610e24565b600254604080517f8da5cb5b000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169130918391638da5cb5b916004808201926020929091908290030181865afa15801561099d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c191906112e8565b73ffffffffffffffffffffffffffffffffffffffff1614158015610a7a57506040517f514e62fc0000000000000000000000000000000000000000000000000000000081523060048201526002602482015273ffffffffffffffffffffffffffffffffffffffff82169063514e62fc90604401602060405180830381865afa158015610a4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a739190611303565b1515600114155b15610ab1576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aba85610f2d565b610af0576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058054905f610aff83611322565b909155505073ffffffffffffffffffffffffffffffffffffffff8581165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915560025460045483549251602481019590955260448501929092529193919091169160e09190911b90606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610c0a919061137e565b5f604051808303815f865af19150503d805f8114610c43576040519150601f19603f3d011682016040523d82523d5f602084013e610c48565b606091505b5050905080610c83576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529289901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8716907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610d3e916111ac565b60405180910390a250600195945050505050565b5f610d5c84610f2d565b949350505050565b610d6c610e24565b63389a75e1600c52805f526020600c208054421115610d9257636f5e88185f526004601cfd5b5f905561061881610ec8565b610da6610e24565b8060601b610dbb57637448fbae5f526004601cfd5b61061881610ec8565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa9216705000000000000000000000000000000000000000000000000000000001480610608575061060882610f6a565b61062d82825f611000565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610920576382b429005f526004601cfd5b61062d82826001611000565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561060857506003546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061060857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610608565b638b78c6d8600c52825f526020600c20805483811783611021575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611086575f80fd5b919050565b5f6020828403121561109b575f80fd5b6110a482611057565b9392505050565b5f602082840312156110bb575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610618575f80fd5b5f80604083850312156110f4575f80fd5b82356110ff816110c2565b946020939093013593505050565b5f6020828403121561111d575f80fd5b81356110a4816110c2565b5f8083601f840112611138575f80fd5b50813567ffffffffffffffff81111561114f575f80fd5b602083019150836020828501011115611166575f80fd5b9250929050565b5f806020838503121561117e575f80fd5b823567ffffffffffffffff811115611194575f80fd5b6111a085828601611128565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f805f60408486031215611211575f80fd5b833561121c816110c2565b9250602084013567ffffffffffffffff811115611237575f80fd5b61124386828701611128565b9497909650939450505050565b5f6080828403128015611261575f80fd5b506040516080810167ffffffffffffffff811182821017156112aa577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282356112b8816110c2565b81526112c660208401611057565b6020820152604083810135908201526060928301359281019290925250919050565b5f602082840312156112f8575f80fd5b81516110a4816110c2565b5f60208284031215611313575f80fd5b815180151581146110a4575f80fd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611377577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b5f82518060208501845e5f92019182525091905056fea26469706673582212200bda90f158411392f8285d4968c6a3fb89d36d405e24c31ab345de224e70a4cd64736f6c634300081a0033",F5="0x6080604052600436106101af575f3560e01c8063514e62fc116100e7578063c884ef8311610087578063ea3d508a11610062578063ea3d508a14610543578063f04e283e1461055c578063f2fde38b1461056f578063fee81cf414610582575f80fd5b8063c884ef83146104e1578063db09da121461050f578063dcc59b6f1461052e575f80fd5b80638da5cb5b116100c25780638da5cb5b1461044e578063a270a73714610481578063a4d66daf146104ad578063bb1757cf146104c2575f80fd5b8063514e62fc1461040957806354d1f13d1461043e578063715018a614610446575f80fd5b806328d6183b11610152578063439fab911161012d578063439fab9114610354578063474f5a44146103735780634a4ee7b1146103bc5780634e7165a2146103cf575f80fd5b806328d6183b1461027d5780632de94807146102dc57806338d52e0f1461030d575f80fd5b80631c10893f1161018d5780631c10893f146102195780631cd64df41461022c578063228cb733146102615780632569296214610275575f80fd5b806301ffc9a7146101b357806307621eca146101e7578063183a4f6e14610204575b5f80fd5b3480156101be575f80fd5b506101d26101cd36600461108b565b6105b3565b60405190151581526020015b60405180910390f35b3480156101f2575f80fd5b505f545b6040519081526020016101de565b6102176102123660046110ab565b61060e565b005b6102176102273660046110e3565b61061b565b348015610237575f80fd5b506101d26102463660046110e3565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561026c575f80fd5b506101f65f5481565b610217610631565b348015610288575f80fd5b507f0d36a40d000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101de565b3480156102e7575f80fd5b506101f66102f636600461110d565b638b78c6d8600c9081525f91909152602090205490565b348015610318575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b34801561035f575f80fd5b5061021761036e36600461116d565b61067e565b34801561037e575f80fd5b5061039261038d36600461116d565b610890565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016101de565b6102176103ca3660046110e3565b6108c4565b3480156103da575f80fd5b506103fc6103e936600461116d565b5050604080515f81526020810190915290565b6040516101de91906111ac565b348015610414575f80fd5b506101d26104233660046110e3565b638b78c6d8600c9081525f9290925260209091205416151590565b6102176108d6565b61021761090f565b348015610459575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275461032f565b34801561048c575f80fd5b5060025461032f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104b8575f80fd5b506101f660035481565b3480156104cd575f80fd5b506101d26104dc3660046111ff565b610922565b3480156104ec575f80fd5b506101d26104fb36600461110d565b60016020525f908152604090205460ff1681565b34801561051a575f80fd5b506101d26105293660046111ff565b610d52565b348015610539575f80fd5b506101f660055481565b34801561054e575f80fd5b506004546102ab9060e01b81565b61021761056a36600461110d565b610d64565b61021761057d36600461110d565b610d9e565b34801561058d575f80fd5b506101f661059c36600461110d565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f0d36a40d000000000000000000000000000000000000000000000000000000001480610608575061060882610dc4565b92915050565b6106183382610e19565b50565b610623610e24565b61062d8282610e59565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156106cf5760018160011c14303b106106c65763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6106dd83850185611250565b905080604001515f14806106f357506060810151155b1561072a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020810151600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e09290921c91909117905560408101515f5560608101516003556107bf33610e65565b805f015173ffffffffffffffffffffffffffffffffffffffff167fef49c8fd80435c15980f0f55660ffaac9417e5843768f7f21566cfad2d19bfe782602001518360400151846060015160405161084d939291907fffffffff000000000000000000000000000000000000000000000000000000009390931683526020830191909152604082015260600190565b60405180910390a250801561088b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108cc610e24565b61062d8282610e19565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610917610e24565b6109205f610ec8565b565b5f61092b610e24565b600254604080517f8da5cb5b000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169130918391638da5cb5b916004808201926020929091908290030181865afa15801561099d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c191906112e8565b73ffffffffffffffffffffffffffffffffffffffff1614158015610a7a57506040517f514e62fc0000000000000000000000000000000000000000000000000000000081523060048201526002602482015273ffffffffffffffffffffffffffffffffffffffff82169063514e62fc90604401602060405180830381865afa158015610a4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a739190611303565b1515600114155b15610ab1576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aba85610f2d565b610af0576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058054905f610aff83611322565b909155505073ffffffffffffffffffffffffffffffffffffffff8581165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915560025460045483549251602481019590955260448501929092529193919091169160e09190911b90606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610c0a919061137e565b5f604051808303815f865af19150503d805f8114610c43576040519150601f19603f3d011682016040523d82523d5f602084013e610c48565b606091505b5050905080610c83576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529289901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8716907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610d3e916111ac565b60405180910390a250600195945050505050565b5f610d5c84610f2d565b949350505050565b610d6c610e24565b63389a75e1600c52805f526020600c208054421115610d9257636f5e88185f526004601cfd5b5f905561061881610ec8565b610da6610e24565b8060601b610dbb57637448fbae5f526004601cfd5b61061881610ec8565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa9216705000000000000000000000000000000000000000000000000000000001480610608575061060882610f6a565b61062d82825f611000565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610920576382b429005f526004601cfd5b61062d82826001611000565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561060857506003546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061060857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610608565b638b78c6d8600c52825f526020600c20805483811783611021575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611086575f80fd5b919050565b5f6020828403121561109b575f80fd5b6110a482611057565b9392505050565b5f602082840312156110bb575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610618575f80fd5b5f80604083850312156110f4575f80fd5b82356110ff816110c2565b946020939093013593505050565b5f6020828403121561111d575f80fd5b81356110a4816110c2565b5f8083601f840112611138575f80fd5b50813567ffffffffffffffff81111561114f575f80fd5b602083019150836020828501011115611166575f80fd5b9250929050565b5f806020838503121561117e575f80fd5b823567ffffffffffffffff811115611194575f80fd5b6111a085828601611128565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f805f60408486031215611211575f80fd5b833561121c816110c2565b9250602084013567ffffffffffffffff811115611237575f80fd5b61124386828701611128565b9497909650939450505050565b5f6080828403128015611261575f80fd5b506040516080810167ffffffffffffffff811182821017156112aa577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282356112b8816110c2565b81526112c660208401611057565b6020820152604083810135908201526060928301359281019290925250919050565b5f602082840312156112f8575f80fd5b81516110a4816110c2565b5f60208284031215611313575f80fd5b815180151581146110a4575f80fd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611377577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b5f82518060208501845e5f92019182525091905056fea26469706673582212200bda90f158411392f8285d4968c6a3fb89d36d405e24c31ab345de224e70a4cd64736f6c634300081a0033",k5={},S5={},V0={_format:N5,contractName:P5,sourceName:$5,abi:L5,bytecode:H5,deployedBytecode:F5,linkReferences:k5,deployedLinkReferences:S5},D5="hh-sol-artifact-1",G5="LimitedSignerValidator",V5="contracts/validators/LimitedSignerValidator.sol",U5=[{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"uint8",name:"available",type:"uint8"},{internalType:"uint256",name:"id",type:"uint256"}],name:"InvalidIncentive",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[{internalType:"address",name:"claimant",type:"address"}],name:"MaximumClaimed",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"validatorCaller",type:"address"}],name:"SignerValidatorInitialized",type:"event"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"}],name:"hashClaimantData",outputs:[{internalType:"bytes32",name:"hash",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint8",name:"incentiveQuantity",type:"uint8"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"incentiveData",type:"bytes"}],name:"hashSignerData",outputs:[{internalType:"bytes32",name:"hashedSignerData",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"maxClaimCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"quantityClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"signers_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newCaller",type:"address"}],name:"setValidatorCaller",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"signers",outputs:[{internalType:"bool",name:"",type:"bool"}],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:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"claimData",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"}],q5="0x610120604052348015610010575f80fd5b50306080524660a0525f60c081905260e081905261010052610030610035565b61009a565b63409feecd19805460018116156100535763f92ee8a95f526004601cfd5b6001600160401b03808260011c14610095578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60805160a05160c05160e051610100516119466100c85f395f50505f50505f50505f50505f50506119465ff3fe60806040526004361061013d575f3560e01c8063715018a6116100bb578063ce5c134f11610071578063f04e283e11610057578063f04e283e1461036d578063f2fde38b14610380578063fee81cf414610393575f80fd5b8063ce5c134f14610339578063d3de6e751461034e575f80fd5b806384b0196e116100a157806384b0196e146102a05780638da5cb5b146102c7578063a1d2756f1461031a575f80fd5b8063715018a61461026a578063736c0d5b14610272575f80fd5b80632f9e058b11610110578063439fab91116100f6578063439fab911461023057806354d1f13d1461024f578063703b690014610257575f80fd5b80632f9e058b146101e65780634359d28a14610211575f80fd5b806301ffc9a7146101415780630668e9d41461017557806325692962146101a257806328d6183b146101ac575b5f80fd5b34801561014c575f80fd5b5061016061015b366004611106565b6103c4565b60405190151581526020015b60405180910390f35b348015610180575f80fd5b5061019461018f366004611166565b61041f565b60405190815260200161016c565b6101aa610480565b005b3480156101b7575f80fd5b506040517fc8ebc75800000000000000000000000000000000000000000000000000000000815260200161016c565b3480156101f1575f80fd5b5061019461020036600461119c565b60016020525f908152604090205481565b34801561021c575f80fd5b506101aa61022b3660046111fb565b6104cd565b34801561023b575f80fd5b506101aa61024a3660046112a5565b6105c9565b6101aa61075e565b6101606102653660046112e4565b610797565b6101aa61080d565b34801561027d575f80fd5b5061016061028c366004611349565b5f6020819052908152604090205460ff1681565b3480156102ab575f80fd5b506102b4610820565b60405161016c97969594939291906113b0565b3480156102d2575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610325575f80fd5b506101aa610334366004611349565b6108c8565b348015610344575f80fd5b5061019460025481565b348015610359575f80fd5b506101946103683660046115b9565b610917565b6101aa61037b366004611349565b6109aa565b6101aa61038e366004611349565b6109e7565b34801561039e575f80fd5b506101946103ad366004611349565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610a0d565b92915050565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016908201525f906074016040516020818303038152906040528051906020012090505b9392505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6104d5610a62565b82811461050e576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156105c25782828281811061052a5761052a611621565b905060200201602081019061053f919061164e565b5f8087878581811061055357610553611621565b90506020020160208101906105689190611349565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610510565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561061a5760018160011c14303b106106115763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f808061062a8587018761167d565b925092509250610652835f8151811061064557610645611621565b6020026020010151610a97565b60028190555f5b83518110156106dc5760015f8086848151811061067857610678611621565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610659565b5050600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055508015610759576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f6107a3868686610afa565b6107f6576040517f059b704500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b6108038686868686610b54565b9695505050505050565b610815610a62565b61081e5f610cdc565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108b6604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b6108d0610a62565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109a19060c00160405160208183030381529060405280519060200120610d41565b95945050505050565b6109b2610a62565b63389a75e1600c52805f526020600c2080544211156109d857636f5e88185f526004601cfd5b5f90556109e481610cdc565b50565b6109ef610a62565b8060601b610a0457637448fbae5f526004601cfd5b6109e481610cdc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610d6d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461081e576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b5f80610b0785858561041f565b5f8181526001602081905260408220549293509091610b259161174d565b9050600254811115610b3b575f92505050610479565b5f91825260016020819052604090922055949350505050565b6004545f9073ffffffffffffffffffffffffffffffffffffffff163314610ba7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610bb483850185611785565b90505f815f0151806020019051810190610bce9190611845565b90505f610be5898360400151898660200151610917565b905087826040015160ff1611610c395760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff9091166004820152602481018990526044016107ed565b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff16610c98576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ca46003828a610dc2565b60208201518251610ccf9173ffffffffffffffffffffffffffffffffffffffff909116908390610e50565b9998505050505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d4a610f53565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b22000000000000000000000000000000000000000000000000000000001480610419575061041982611020565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610e1957815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610e4657835f528560045260245ffd5b5090555050505050565b5f73ffffffffffffffffffffffffffffffffffffffff84161561047957604051843b610f0b57825160408114610e8e5760418114610ec85750610f4b565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610edb565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5180861860601b3d119250505f60605280604052610f4b565b631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa905060208260443d01868b5afa9151911691141691505b509392505050565b5f805f80610fc5604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c0000000000000000000000000000000000000000000000000000000014806104195750610419825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061041957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610419565b5f60208284031215611116575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610479575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146109e4575f80fd5b5f805f60608486031215611178575f80fd5b8335925060208401359150604084013561119181611145565b809150509250925092565b5f602082840312156111ac575f80fd5b5035919050565b5f8083601f8401126111c3575f80fd5b50813567ffffffffffffffff8111156111da575f80fd5b6020830191508360208260051b85010111156111f4575f80fd5b9250929050565b5f805f806040858703121561120e575f80fd5b843567ffffffffffffffff811115611224575f80fd5b611230878288016111b3565b909550935050602085013567ffffffffffffffff81111561124f575f80fd5b61125b878288016111b3565b95989497509550505050565b5f8083601f840112611277575f80fd5b50813567ffffffffffffffff81111561128e575f80fd5b6020830191508360208285010111156111f4575f80fd5b5f80602083850312156112b6575f80fd5b823567ffffffffffffffff8111156112cc575f80fd5b6112d885828601611267565b90969095509350505050565b5f805f805f608086880312156112f8575f80fd5b8535945060208601359350604086013561131181611145565b9250606086013567ffffffffffffffff81111561132c575f80fd5b61133888828901611267565b969995985093965092949392505050565b5f60208284031215611359575f80fd5b813561047981611145565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f6113ea60e0830189611364565b82810360408401526113fc8189611364565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561145e578351835260209384019390920191600101611440565b50909b9a5050505050505050505050565b60ff811681146109e4575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156114cd576114cd61147d565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561151a5761151a61147d565b604052919050565b5f67ffffffffffffffff82111561153b5761153b61147d565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112611576575f80fd5b813561158961158482611522565b6114d3565b81815284602083860101111561159d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80608085870312156115cc575f80fd5b8435935060208501356115de8161146f565b925060408501356115ee81611145565b9150606085013567ffffffffffffffff811115611609575f80fd5b61161587828801611567565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561165e575f80fd5b81358015158114610479575f80fd5b803561167881611145565b919050565b5f805f6060848603121561168f575f80fd5b833567ffffffffffffffff8111156116a5575f80fd5b8401601f810186136116b5575f80fd5b803567ffffffffffffffff8111156116cf576116cf61147d565b8060051b6116df602082016114d3565b918252602081840181019290810190898411156116fa575f80fd5b6020850194505b83851015611728578435925061171683611145565b82825260209485019490910190611701565b809750505050505061173c6020850161166d565b929592945050506040919091013590565b80820180821115610419577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60208284031215611795575f80fd5b813567ffffffffffffffff8111156117ab575f80fd5b8201604081850312156117bc575f80fd5b6040805190810167ffffffffffffffff811182821017156117df576117df61147d565b604052813567ffffffffffffffff8111156117f8575f80fd5b61180486828501611567565b825250602082013567ffffffffffffffff811115611820575f80fd5b61182c86828501611567565b602083015250949350505050565b80516116788161146f565b5f60208284031215611855575f80fd5b815167ffffffffffffffff81111561186b575f80fd5b82016060818503121561187c575f80fd5b6118846114aa565b815161188f81611145565b8152602082015167ffffffffffffffff8111156118aa575f80fd5b8201601f810186136118ba575f80fd5b80516118c861158482611522565b8181528760208385010111156118dc575f80fd5b8160208401602083015e5f602083830101528060208501525050506119036040830161183a565b604082015294935050505056fea2646970667358221220115474c7aaa8c062bbbfdcf3a77edb3c05355de6e9f8a02b5df129f9a023088c64736f6c634300081a0033",j5="0x60806040526004361061013d575f3560e01c8063715018a6116100bb578063ce5c134f11610071578063f04e283e11610057578063f04e283e1461036d578063f2fde38b14610380578063fee81cf414610393575f80fd5b8063ce5c134f14610339578063d3de6e751461034e575f80fd5b806384b0196e116100a157806384b0196e146102a05780638da5cb5b146102c7578063a1d2756f1461031a575f80fd5b8063715018a61461026a578063736c0d5b14610272575f80fd5b80632f9e058b11610110578063439fab91116100f6578063439fab911461023057806354d1f13d1461024f578063703b690014610257575f80fd5b80632f9e058b146101e65780634359d28a14610211575f80fd5b806301ffc9a7146101415780630668e9d41461017557806325692962146101a257806328d6183b146101ac575b5f80fd5b34801561014c575f80fd5b5061016061015b366004611106565b6103c4565b60405190151581526020015b60405180910390f35b348015610180575f80fd5b5061019461018f366004611166565b61041f565b60405190815260200161016c565b6101aa610480565b005b3480156101b7575f80fd5b506040517fc8ebc75800000000000000000000000000000000000000000000000000000000815260200161016c565b3480156101f1575f80fd5b5061019461020036600461119c565b60016020525f908152604090205481565b34801561021c575f80fd5b506101aa61022b3660046111fb565b6104cd565b34801561023b575f80fd5b506101aa61024a3660046112a5565b6105c9565b6101aa61075e565b6101606102653660046112e4565b610797565b6101aa61080d565b34801561027d575f80fd5b5061016061028c366004611349565b5f6020819052908152604090205460ff1681565b3480156102ab575f80fd5b506102b4610820565b60405161016c97969594939291906113b0565b3480156102d2575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610325575f80fd5b506101aa610334366004611349565b6108c8565b348015610344575f80fd5b5061019460025481565b348015610359575f80fd5b506101946103683660046115b9565b610917565b6101aa61037b366004611349565b6109aa565b6101aa61038e366004611349565b6109e7565b34801561039e575f80fd5b506101946103ad366004611349565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610a0d565b92915050565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016908201525f906074016040516020818303038152906040528051906020012090505b9392505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6104d5610a62565b82811461050e576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156105c25782828281811061052a5761052a611621565b905060200201602081019061053f919061164e565b5f8087878581811061055357610553611621565b90506020020160208101906105689190611349565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610510565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561061a5760018160011c14303b106106115763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f808061062a8587018761167d565b925092509250610652835f8151811061064557610645611621565b6020026020010151610a97565b60028190555f5b83518110156106dc5760015f8086848151811061067857610678611621565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610659565b5050600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055508015610759576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f6107a3868686610afa565b6107f6576040517f059b704500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b6108038686868686610b54565b9695505050505050565b610815610a62565b61081e5f610cdc565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108b6604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b6108d0610a62565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109a19060c00160405160208183030381529060405280519060200120610d41565b95945050505050565b6109b2610a62565b63389a75e1600c52805f526020600c2080544211156109d857636f5e88185f526004601cfd5b5f90556109e481610cdc565b50565b6109ef610a62565b8060601b610a0457637448fbae5f526004601cfd5b6109e481610cdc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610d6d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461081e576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b5f80610b0785858561041f565b5f8181526001602081905260408220549293509091610b259161174d565b9050600254811115610b3b575f92505050610479565b5f91825260016020819052604090922055949350505050565b6004545f9073ffffffffffffffffffffffffffffffffffffffff163314610ba7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610bb483850185611785565b90505f815f0151806020019051810190610bce9190611845565b90505f610be5898360400151898660200151610917565b905087826040015160ff1611610c395760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff9091166004820152602481018990526044016107ed565b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff16610c98576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ca46003828a610dc2565b60208201518251610ccf9173ffffffffffffffffffffffffffffffffffffffff909116908390610e50565b9998505050505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d4a610f53565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b22000000000000000000000000000000000000000000000000000000001480610419575061041982611020565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610e1957815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610e4657835f528560045260245ffd5b5090555050505050565b5f73ffffffffffffffffffffffffffffffffffffffff84161561047957604051843b610f0b57825160408114610e8e5760418114610ec85750610f4b565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610edb565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5180861860601b3d119250505f60605280604052610f4b565b631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa905060208260443d01868b5afa9151911691141691505b509392505050565b5f805f80610fc5604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c0000000000000000000000000000000000000000000000000000000014806104195750610419825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061041957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610419565b5f60208284031215611116575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610479575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146109e4575f80fd5b5f805f60608486031215611178575f80fd5b8335925060208401359150604084013561119181611145565b809150509250925092565b5f602082840312156111ac575f80fd5b5035919050565b5f8083601f8401126111c3575f80fd5b50813567ffffffffffffffff8111156111da575f80fd5b6020830191508360208260051b85010111156111f4575f80fd5b9250929050565b5f805f806040858703121561120e575f80fd5b843567ffffffffffffffff811115611224575f80fd5b611230878288016111b3565b909550935050602085013567ffffffffffffffff81111561124f575f80fd5b61125b878288016111b3565b95989497509550505050565b5f8083601f840112611277575f80fd5b50813567ffffffffffffffff81111561128e575f80fd5b6020830191508360208285010111156111f4575f80fd5b5f80602083850312156112b6575f80fd5b823567ffffffffffffffff8111156112cc575f80fd5b6112d885828601611267565b90969095509350505050565b5f805f805f608086880312156112f8575f80fd5b8535945060208601359350604086013561131181611145565b9250606086013567ffffffffffffffff81111561132c575f80fd5b61133888828901611267565b969995985093965092949392505050565b5f60208284031215611359575f80fd5b813561047981611145565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f6113ea60e0830189611364565b82810360408401526113fc8189611364565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561145e578351835260209384019390920191600101611440565b50909b9a5050505050505050505050565b60ff811681146109e4575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156114cd576114cd61147d565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561151a5761151a61147d565b604052919050565b5f67ffffffffffffffff82111561153b5761153b61147d565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112611576575f80fd5b813561158961158482611522565b6114d3565b81815284602083860101111561159d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80608085870312156115cc575f80fd5b8435935060208501356115de8161146f565b925060408501356115ee81611145565b9150606085013567ffffffffffffffff811115611609575f80fd5b61161587828801611567565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561165e575f80fd5b81358015158114610479575f80fd5b803561167881611145565b919050565b5f805f6060848603121561168f575f80fd5b833567ffffffffffffffff8111156116a5575f80fd5b8401601f810186136116b5575f80fd5b803567ffffffffffffffff8111156116cf576116cf61147d565b8060051b6116df602082016114d3565b918252602081840181019290810190898411156116fa575f80fd5b6020850194505b83851015611728578435925061171683611145565b82825260209485019490910190611701565b809750505050505061173c6020850161166d565b929592945050506040919091013590565b80820180821115610419577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60208284031215611795575f80fd5b813567ffffffffffffffff8111156117ab575f80fd5b8201604081850312156117bc575f80fd5b6040805190810167ffffffffffffffff811182821017156117df576117df61147d565b604052813567ffffffffffffffff8111156117f8575f80fd5b61180486828501611567565b825250602082013567ffffffffffffffff811115611820575f80fd5b61182c86828501611567565b602083015250949350505050565b80516116788161146f565b5f60208284031215611855575f80fd5b815167ffffffffffffffff81111561186b575f80fd5b82016060818503121561187c575f80fd5b6118846114aa565b815161188f81611145565b8152602082015167ffffffffffffffff8111156118aa575f80fd5b8201601f810186136118ba575f80fd5b80516118c861158482611522565b8181528760208385010111156118dc575f80fd5b8160208401602083015e5f602083830101528060208501525050506119036040830161183a565b604082015294935050505056fea2646970667358221220115474c7aaa8c062bbbfdcf3a77edb3c05355de6e9f8a02b5df129f9a023088c64736f6c634300081a0033",Z5={},W5={},U0={_format:D5,contractName:G5,sourceName:V5,abi:U5,bytecode:q5,deployedBytecode:j5,linkReferences:Z5,deployedLinkReferences:W5},K5="hh-sol-artifact-1",Y5="PayableLimitedSignerValidator",Q5="contracts/validators/PayableLimitedSignerValidator.sol",J5=[{inputs:[{internalType:"address",name:"owner_",type:"address"},{internalType:"uint256",name:"initialClaimFee_",type:"uint256"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"FeeTransferFailed",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidClaimFee",type:"error"},{inputs:[{internalType:"uint8",name:"available",type:"uint8"},{internalType:"uint256",name:"id",type:"uint256"}],name:"InvalidIncentive",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[{internalType:"address",name:"claimant",type:"address"}],name:"MaximumClaimed",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"claimant",type:"address"},{indexed:!0,internalType:"uint256",name:"boostId",type:"uint256"},{indexed:!0,internalType:"uint256",name:"incentiveId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"},{indexed:!1,internalType:"address",name:"feeReceiver",type:"address"}],name:"ClaimFeePaid",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newFee",type:"uint256"}],name:"ClaimFeeUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"validatorCaller",type:"address"}],name:"SignerValidatorInitialized",type:"event"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"claimFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getClaimFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"}],name:"hashClaimantData",outputs:[{internalType:"bytes32",name:"hash",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint8",name:"incentiveQuantity",type:"uint8"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"incentiveData",type:"bytes"}],name:"hashSignerData",outputs:[{internalType:"bytes32",name:"hashedSignerData",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"maxClaimCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"quantityClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"signers_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"newFee",type:"uint256"}],name:"setClaimFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newCaller",type:"address"}],name:"setValidatorCaller",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"signers",outputs:[{internalType:"bool",name:"",type:"bool"}],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:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"claimData",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"}],X5="0x610120604052348015610010575f80fd5b50604051611fe4380380611fe483398101604081905261002f91610131565b306080524660a0525f60c081905260e08190526101005261004e610091565b6001600160a01b038216610074576040516282b42960e81b815260040160405180910390fd5b61007d826100f6565b600381905561008a610091565b5050610168565b63409feecd19805460018116156100af5763f92ee8a95f526004601cfd5b6001600160401b03808260011c146100f1578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0316638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b5f8060408385031215610142575f80fd5b82516001600160a01b0381168114610158575f80fd5b6020939093015192949293505050565b60805160a05160c05160e05161010051611e4e6101965f395f50505f50505f50505f50505f5050611e4e5ff3fe60806040526004361061016d575f3560e01c8063715018a6116100c6578063a1d2756f1161007c578063f04e283e11610057578063f04e283e146103e5578063f2fde38b146103f8578063fee81cf41461040b575f80fd5b8063a1d2756f14610392578063ce5c134f146103b1578063d3de6e75146103c6575f80fd5b806384b0196e116100ac57806384b0196e146103035780638da5cb5b1461032a57806399d32fc41461037d575f80fd5b8063715018a6146102cd578063736c0d5b146102d5575f80fd5b80632f9e058b116101265780634f361c9a116101015780634f361c9a1461029e57806354d1f13d146102b2578063703b6900146102ba575f80fd5b80632f9e058b146102355780634359d28a14610260578063439fab911461027f575f80fd5b8063256929621161015657806325692962146101d257806328d6183b146101dc5780632e75ab5014610216575f80fd5b806301ffc9a7146101715780630668e9d4146101a5575b5f80fd5b34801561017c575f80fd5b5061019061018b3660046115cc565b61043c565b60405190151581526020015b60405180910390f35b3480156101b0575f80fd5b506101c46101bf36600461162c565b610497565b60405190815260200161019c565b6101da6104f8565b005b3480156101e7575f80fd5b506040517fb0fafe5800000000000000000000000000000000000000000000000000000000815260200161019c565b348015610221575f80fd5b506101da610230366004611662565b610545565b348015610240575f80fd5b506101c461024f366004611662565b60016020525f908152604090205481565b34801561026b575f80fd5b506101da61027a3660046116c1565b6105d8565b34801561028a575f80fd5b506101da61029936600461176b565b6106d4565b3480156102a9575f80fd5b506101c46108ae565b6101da6108bc565b6101906102c83660046117aa565b6108f5565b6101da610b03565b3480156102e0575f80fd5b506101906102ef36600461180f565b5f6020819052908152604090205460ff1681565b34801561030e575f80fd5b50610317610b16565b60405161019c9796959493929190611876565b348015610335575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019c565b348015610388575f80fd5b506101c460035481565b34801561039d575f80fd5b506101da6103ac36600461180f565b610bbe565b3480156103bc575f80fd5b506101c460025481565b3480156103d1575f80fd5b506101c46103e0366004611a7f565b610c0d565b6101da6103f336600461180f565b610ca0565b6101da61040636600461180f565b610cdd565b348015610416575f80fd5b506101c461042536600461180f565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb0fafe58000000000000000000000000000000000000000000000000000000001480610491575061049182610d03565b92915050565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016908201525f906074016040516020818303038152906040528051906020012090505b9392505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b61054d610d58565b60065473ffffffffffffffffffffffffffffffffffffffff161561059d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527f64374f1a975abb9bc8e8857d704b9ead41989ff599d90c1e8f7d34bc2ebea92a9060200160405180910390a150565b6105e0610d58565b828114610619576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156106cd5782828281811061063557610635611ae7565b905060200201602081019061064a9190611b14565b5f8087878581811061065e5761065e611ae7565b9050602002016020810190610673919061180f565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161061b565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107255760018160011c14303b1061071c5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f80808061073686880188611b43565b9350935093509350610760845f8151811061075357610753611ae7565b6020026020010151610d8d565b6002829055600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555f5b845181101561082a5760015f808784815181106107c6576107c6611ae7565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016107a7565b5050600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9390931692909217909155505080156108a9576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f6108b7610df0565b905090565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f806108ff610df0565b905080341461093a576040517faf2eb37300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109488888888888610ea5565b90505f821180156109565750805b15610af857600554604080517f39a51be500000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916339a51be59160048083019260209291908290030181865afa1580156109c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ec9190611c23565b90505f8173ffffffffffffffffffffffffffffffffffffffff16846040515f6040518083038185875af1925050503d805f8114610a44576040519150601f19603f3d011682016040523d82523d5f602084013e610a49565b606091505b5050905080610a84576040517f4033e4e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b888a8973ffffffffffffffffffffffffffffffffffffffff167fb671e5a07ab020a275a7ca33dc2074f9761157b5f6e779751e8fd89909dafc6e8786604051610aed92919091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b60405180910390a450505b979650505050505050565b610b0b610d58565b610b145f610f1b565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610bac604080518082018252601d81527f50617961626c654c696d697465645369676e657256616c696461746f720000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b610bc6610d58565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f90610c979060c00160405160208183030381529060405280519060200120610f80565b95945050505050565b610ca8610d58565b63389a75e1600c52805f526020600c208054421115610cce57636f5e88185f526004601cfd5b5f9055610cda81610f1b565b50565b610ce5610d58565b8060601b610cfa57637448fbae5f526004601cfd5b610cda81610f1b565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610491575061049182610fac565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b14576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b6006545f9073ffffffffffffffffffffffffffffffffffffffff1615610e9e5760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166399d32fc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e7a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b79190611c3e565b5060035490565b5f610eb1868686611001565b610f04576040517f059b704500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b610f11868686868661105b565b9695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610f896111e3565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb0fafe580000000000000000000000000000000000000000000000000000000014806104915750610491826112b0565b5f8061100e858585610497565b5f818152600160208190526040822054929350909161102c91611c55565b9050600254811115611042575f925050506104f1565b5f91825260016020819052604090922055949350505050565b6005545f9073ffffffffffffffffffffffffffffffffffffffff1633146110ae576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110bb83850185611c8d565b90505f815f01518060200190518101906110d59190611d4d565b90505f6110ec898360400151898660200151610c0d565b905087826040015160ff16116111405760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff909116600482015260248101899052604401610efb565b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1661119f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111ab6004828a611305565b602082015182516111d69173ffffffffffffffffffffffffffffffffffffffff909116908390611393565b9998505050505050505050565b5f805f80611255604080518082018252601d81527f50617961626c654c696d697465645369676e657256616c696461746f720000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610491575061049182611496565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a00000000000000000000000000000000000000000000000000000000600783111561135c57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c600116600118801561138957835f528560045260245ffd5b5090555050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416156104f157604051843b61144e578251604081146113d1576041811461140b575061148e565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261141e565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5180861860601b3d119250505f6060528060405261148e565b631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa905060208260443d01868b5afa9151911691141691505b509392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b220000000000000000000000000000000000000000000000000000000014806104915750610491825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c0000000000000000000000000000000000000000000000000000000014806104915750610491825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061049157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610491565b5f602082840312156115dc575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146104f1575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610cda575f80fd5b5f805f6060848603121561163e575f80fd5b833592506020840135915060408401356116578161160b565b809150509250925092565b5f60208284031215611672575f80fd5b5035919050565b5f8083601f840112611689575f80fd5b50813567ffffffffffffffff8111156116a0575f80fd5b6020830191508360208260051b85010111156116ba575f80fd5b9250929050565b5f805f80604085870312156116d4575f80fd5b843567ffffffffffffffff8111156116ea575f80fd5b6116f687828801611679565b909550935050602085013567ffffffffffffffff811115611715575f80fd5b61172187828801611679565b95989497509550505050565b5f8083601f84011261173d575f80fd5b50813567ffffffffffffffff811115611754575f80fd5b6020830191508360208285010111156116ba575f80fd5b5f806020838503121561177c575f80fd5b823567ffffffffffffffff811115611792575f80fd5b61179e8582860161172d565b90969095509350505050565b5f805f805f608086880312156117be575f80fd5b853594506020860135935060408601356117d78161160b565b9250606086013567ffffffffffffffff8111156117f2575f80fd5b6117fe8882890161172d565b969995985093965092949392505050565b5f6020828403121561181f575f80fd5b81356104f18161160b565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f6118b060e083018961182a565b82810360408401526118c2818961182a565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611924578351835260209384019390920191600101611906565b50909b9a5050505050505050505050565b60ff81168114610cda575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561199357611993611943565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156119e0576119e0611943565b604052919050565b5f67ffffffffffffffff821115611a0157611a01611943565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112611a3c575f80fd5b8135611a4f611a4a826119e8565b611999565b818152846020838601011115611a63575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215611a92575f80fd5b843593506020850135611aa481611935565b92506040850135611ab48161160b565b9150606085013567ffffffffffffffff811115611acf575f80fd5b611adb87828801611a2d565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611b24575f80fd5b813580151581146104f1575f80fd5b8035611b3e8161160b565b919050565b5f805f8060808587031215611b56575f80fd5b843567ffffffffffffffff811115611b6c575f80fd5b8501601f81018713611b7c575f80fd5b803567ffffffffffffffff811115611b9657611b96611943565b8060051b611ba660208201611999565b9182526020818401810192908101908a841115611bc1575f80fd5b6020850194505b83851015611bef5784359250611bdd8361160b565b82825260209485019490910190611bc8565b8098505050505050611c0360208601611b33565b925060408501359150611c1860608601611b33565b905092959194509250565b5f60208284031215611c33575f80fd5b81516104f18161160b565b5f60208284031215611c4e575f80fd5b5051919050565b80820180821115610491577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60208284031215611c9d575f80fd5b813567ffffffffffffffff811115611cb3575f80fd5b820160408185031215611cc4575f80fd5b6040805190810167ffffffffffffffff81118282101715611ce757611ce7611943565b604052813567ffffffffffffffff811115611d00575f80fd5b611d0c86828501611a2d565b825250602082013567ffffffffffffffff811115611d28575f80fd5b611d3486828501611a2d565b602083015250949350505050565b8051611b3e81611935565b5f60208284031215611d5d575f80fd5b815167ffffffffffffffff811115611d73575f80fd5b820160608185031215611d84575f80fd5b611d8c611970565b8151611d978161160b565b8152602082015167ffffffffffffffff811115611db2575f80fd5b8201601f81018613611dc2575f80fd5b8051611dd0611a4a826119e8565b818152876020838501011115611de4575f80fd5b8160208401602083015e5f60208383010152806020850152505050611e0b60408301611d42565b604082015294935050505056fea264697066735822122055485a6409a6ece274d4729b6cf9b29dc90e5dbb91d413815711563942d31cc064736f6c634300081a0033",f6="0x60806040526004361061016d575f3560e01c8063715018a6116100c6578063a1d2756f1161007c578063f04e283e11610057578063f04e283e146103e5578063f2fde38b146103f8578063fee81cf41461040b575f80fd5b8063a1d2756f14610392578063ce5c134f146103b1578063d3de6e75146103c6575f80fd5b806384b0196e116100ac57806384b0196e146103035780638da5cb5b1461032a57806399d32fc41461037d575f80fd5b8063715018a6146102cd578063736c0d5b146102d5575f80fd5b80632f9e058b116101265780634f361c9a116101015780634f361c9a1461029e57806354d1f13d146102b2578063703b6900146102ba575f80fd5b80632f9e058b146102355780634359d28a14610260578063439fab911461027f575f80fd5b8063256929621161015657806325692962146101d257806328d6183b146101dc5780632e75ab5014610216575f80fd5b806301ffc9a7146101715780630668e9d4146101a5575b5f80fd5b34801561017c575f80fd5b5061019061018b3660046115cc565b61043c565b60405190151581526020015b60405180910390f35b3480156101b0575f80fd5b506101c46101bf36600461162c565b610497565b60405190815260200161019c565b6101da6104f8565b005b3480156101e7575f80fd5b506040517fb0fafe5800000000000000000000000000000000000000000000000000000000815260200161019c565b348015610221575f80fd5b506101da610230366004611662565b610545565b348015610240575f80fd5b506101c461024f366004611662565b60016020525f908152604090205481565b34801561026b575f80fd5b506101da61027a3660046116c1565b6105d8565b34801561028a575f80fd5b506101da61029936600461176b565b6106d4565b3480156102a9575f80fd5b506101c46108ae565b6101da6108bc565b6101906102c83660046117aa565b6108f5565b6101da610b03565b3480156102e0575f80fd5b506101906102ef36600461180f565b5f6020819052908152604090205460ff1681565b34801561030e575f80fd5b50610317610b16565b60405161019c9796959493929190611876565b348015610335575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161019c565b348015610388575f80fd5b506101c460035481565b34801561039d575f80fd5b506101da6103ac36600461180f565b610bbe565b3480156103bc575f80fd5b506101c460025481565b3480156103d1575f80fd5b506101c46103e0366004611a7f565b610c0d565b6101da6103f336600461180f565b610ca0565b6101da61040636600461180f565b610cdd565b348015610416575f80fd5b506101c461042536600461180f565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb0fafe58000000000000000000000000000000000000000000000000000000001480610491575061049182610d03565b92915050565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016908201525f906074016040516020818303038152906040528051906020012090505b9392505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b61054d610d58565b60065473ffffffffffffffffffffffffffffffffffffffff161561059d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527f64374f1a975abb9bc8e8857d704b9ead41989ff599d90c1e8f7d34bc2ebea92a9060200160405180910390a150565b6105e0610d58565b828114610619576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156106cd5782828281811061063557610635611ae7565b905060200201602081019061064a9190611b14565b5f8087878581811061065e5761065e611ae7565b9050602002016020810190610673919061180f565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161061b565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107255760018160011c14303b1061071c5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f80808061073686880188611b43565b9350935093509350610760845f8151811061075357610753611ae7565b6020026020010151610d8d565b6002829055600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555f5b845181101561082a5760015f808784815181106107c6576107c6611ae7565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016107a7565b5050600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9390931692909217909155505080156108a9576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f6108b7610df0565b905090565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f806108ff610df0565b905080341461093a576040517faf2eb37300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109488888888888610ea5565b90505f821180156109565750805b15610af857600554604080517f39a51be500000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916339a51be59160048083019260209291908290030181865afa1580156109c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ec9190611c23565b90505f8173ffffffffffffffffffffffffffffffffffffffff16846040515f6040518083038185875af1925050503d805f8114610a44576040519150601f19603f3d011682016040523d82523d5f602084013e610a49565b606091505b5050905080610a84576040517f4033e4e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b888a8973ffffffffffffffffffffffffffffffffffffffff167fb671e5a07ab020a275a7ca33dc2074f9761157b5f6e779751e8fd89909dafc6e8786604051610aed92919091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b60405180910390a450505b979650505050505050565b610b0b610d58565b610b145f610f1b565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610bac604080518082018252601d81527f50617961626c654c696d697465645369676e657256616c696461746f720000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b610bc6610d58565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f90610c979060c00160405160208183030381529060405280519060200120610f80565b95945050505050565b610ca8610d58565b63389a75e1600c52805f526020600c208054421115610cce57636f5e88185f526004601cfd5b5f9055610cda81610f1b565b50565b610ce5610d58565b8060601b610cfa57637448fbae5f526004601cfd5b610cda81610f1b565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610491575061049182610fac565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b14576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b6006545f9073ffffffffffffffffffffffffffffffffffffffff1615610e9e5760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166399d32fc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e7a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b79190611c3e565b5060035490565b5f610eb1868686611001565b610f04576040517f059b704500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b610f11868686868661105b565b9695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610f896111e3565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb0fafe580000000000000000000000000000000000000000000000000000000014806104915750610491826112b0565b5f8061100e858585610497565b5f818152600160208190526040822054929350909161102c91611c55565b9050600254811115611042575f925050506104f1565b5f91825260016020819052604090922055949350505050565b6005545f9073ffffffffffffffffffffffffffffffffffffffff1633146110ae576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6110bb83850185611c8d565b90505f815f01518060200190518101906110d59190611d4d565b90505f6110ec898360400151898660200151610c0d565b905087826040015160ff16116111405760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff909116600482015260248101899052604401610efb565b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1661119f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111ab6004828a611305565b602082015182516111d69173ffffffffffffffffffffffffffffffffffffffff909116908390611393565b9998505050505050505050565b5f805f80611255604080518082018252601d81527f50617961626c654c696d697465645369676e657256616c696461746f720000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610491575061049182611496565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a00000000000000000000000000000000000000000000000000000000600783111561135c57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c600116600118801561138957835f528560045260245ffd5b5090555050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416156104f157604051843b61144e578251604081146113d1576041811461140b575061148e565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261141e565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5180861860601b3d119250505f6060528060405261148e565b631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa905060208260443d01868b5afa9151911691141691505b509392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b220000000000000000000000000000000000000000000000000000000014806104915750610491825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c0000000000000000000000000000000000000000000000000000000014806104915750610491825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061049157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610491565b5f602082840312156115dc575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146104f1575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610cda575f80fd5b5f805f6060848603121561163e575f80fd5b833592506020840135915060408401356116578161160b565b809150509250925092565b5f60208284031215611672575f80fd5b5035919050565b5f8083601f840112611689575f80fd5b50813567ffffffffffffffff8111156116a0575f80fd5b6020830191508360208260051b85010111156116ba575f80fd5b9250929050565b5f805f80604085870312156116d4575f80fd5b843567ffffffffffffffff8111156116ea575f80fd5b6116f687828801611679565b909550935050602085013567ffffffffffffffff811115611715575f80fd5b61172187828801611679565b95989497509550505050565b5f8083601f84011261173d575f80fd5b50813567ffffffffffffffff811115611754575f80fd5b6020830191508360208285010111156116ba575f80fd5b5f806020838503121561177c575f80fd5b823567ffffffffffffffff811115611792575f80fd5b61179e8582860161172d565b90969095509350505050565b5f805f805f608086880312156117be575f80fd5b853594506020860135935060408601356117d78161160b565b9250606086013567ffffffffffffffff8111156117f2575f80fd5b6117fe8882890161172d565b969995985093965092949392505050565b5f6020828403121561181f575f80fd5b81356104f18161160b565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f6118b060e083018961182a565b82810360408401526118c2818961182a565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611924578351835260209384019390920191600101611906565b50909b9a5050505050505050505050565b60ff81168114610cda575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561199357611993611943565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156119e0576119e0611943565b604052919050565b5f67ffffffffffffffff821115611a0157611a01611943565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112611a3c575f80fd5b8135611a4f611a4a826119e8565b611999565b818152846020838601011115611a63575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215611a92575f80fd5b843593506020850135611aa481611935565b92506040850135611ab48161160b565b9150606085013567ffffffffffffffff811115611acf575f80fd5b611adb87828801611a2d565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611b24575f80fd5b813580151581146104f1575f80fd5b8035611b3e8161160b565b919050565b5f805f8060808587031215611b56575f80fd5b843567ffffffffffffffff811115611b6c575f80fd5b8501601f81018713611b7c575f80fd5b803567ffffffffffffffff811115611b9657611b96611943565b8060051b611ba660208201611999565b9182526020818401810192908101908a841115611bc1575f80fd5b6020850194505b83851015611bef5784359250611bdd8361160b565b82825260209485019490910190611bc8565b8098505050505050611c0360208601611b33565b925060408501359150611c1860608601611b33565b905092959194509250565b5f60208284031215611c33575f80fd5b81516104f18161160b565b5f60208284031215611c4e575f80fd5b5051919050565b80820180821115610491577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60208284031215611c9d575f80fd5b813567ffffffffffffffff811115611cb3575f80fd5b820160408185031215611cc4575f80fd5b6040805190810167ffffffffffffffff81118282101715611ce757611ce7611943565b604052813567ffffffffffffffff811115611d00575f80fd5b611d0c86828501611a2d565b825250602082013567ffffffffffffffff811115611d28575f80fd5b611d3486828501611a2d565b602083015250949350505050565b8051611b3e81611935565b5f60208284031215611d5d575f80fd5b815167ffffffffffffffff811115611d73575f80fd5b820160608185031215611d84575f80fd5b611d8c611970565b8151611d978161160b565b8152602082015167ffffffffffffffff811115611db2575f80fd5b8201601f81018613611dc2575f80fd5b8051611dd0611a4a826119e8565b818152876020838501011115611de4575f80fd5b8160208401602083015e5f60208383010152806020850152505050611e0b60408301611d42565b604082015294935050505056fea264697066735822122055485a6409a6ece274d4729b6cf9b29dc90e5dbb91d413815711563942d31cc064736f6c634300081a0033",e6={},b6={},q0={_format:K5,contractName:Y5,sourceName:Q5,abi:J5,bytecode:X5,deployedBytecode:f6,linkReferences:e6,deployedLinkReferences:b6},a6="hh-sol-artifact-1",t6="SignerValidator",d6="contracts/validators/SignerValidator.sol",n6=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"uint8",name:"available",type:"uint8"},{internalType:"uint256",name:"id",type:"uint256"}],name:"InvalidIncentive",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"validatorCaller",type:"address"}],name:"SignerValidatorInitialized",type:"event"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint8",name:"incentiveQuantity",type:"uint8"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"incentiveData",type:"bytes"}],name:"hashSignerData",outputs:[{internalType:"bytes32",name:"hashedSignerData",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"signers_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newCaller",type:"address"}],name:"setValidatorCaller",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"signers",outputs:[{internalType:"bool",name:"",type:"bool"}],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:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"claimData",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"}],c6="0x610120604052348015610010575f80fd5b50306080524660a0525f60c081905260e081905261010052610030610035565b61009a565b63409feecd19805460018116156100535763f92ee8a95f526004601cfd5b6001600160401b03808260011c14610095578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60805160a05160c05160e051610100516116766100c85f395f50505f50505f50505f50505f50506116765ff3fe6080604052600436106100ef575f3560e01c8063736c0d5b11610087578063d3de6e7511610057578063d3de6e7514610293578063f04e283e146102c0578063f2fde38b146102d3578063fee81cf4146102e6575f80fd5b8063736c0d5b146101cc57806384b0196e146101fa5780638da5cb5b14610221578063a1d2756f14610274575f80fd5b8063439fab91116100c2578063439fab911461018a57806354d1f13d146101a9578063703b6900146101b1578063715018a6146101c4575f80fd5b806301ffc9a7146100f3578063256929621461012757806328d6183b146101315780634359d28a1461016b575b5f80fd5b3480156100fe575f80fd5b5061011261010d366004610ec4565b610317565b60405190151581526020015b60405180910390f35b61012f610372565b005b34801561013c575f80fd5b506040517fb8ce7b2200000000000000000000000000000000000000000000000000000000815260200161011e565b348015610176575f80fd5b5061012f610185366004610f4b565b6103bf565b348015610195575f80fd5b5061012f6101a4366004610ff5565b6104bb565b61012f61068c565b6101126101bf366004611055565b6106c5565b61012f610851565b3480156101d7575f80fd5b506101126101e63660046110ba565b5f6020819052908152604090205460ff1681565b348015610205575f80fd5b5061020e610864565b60405161011e9796959493929190611121565b34801561022c575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161011e565b34801561027f575f80fd5b5061012f61028e3660046110ba565b61090c565b34801561029e575f80fd5b506102b26102ad36600461132a565b61095b565b60405190815260200161011e565b61012f6102ce3660046110ba565b6109ee565b61012f6102e13660046110ba565b610a2b565b3480156102f1575f80fd5b506102b26103003660046110ba565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b2200000000000000000000000000000000000000000000000000000000148061036c575061036c82610a51565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6103c7610aa6565b828114610400576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156104b45782828281811061041c5761041c611392565b905060200201602081019061043191906113bf565b5f8087878581811061044557610445611392565b905060200201602081019061045a91906110ba565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610402565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561050c5760018160011c14303b106105035763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8061051b848601866113ee565b91509150610541825f8151811061053457610534611392565b6020026020010151610adb565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555f5b82518110156106065760015f808584815181106105a2576105a2611392565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610583565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527f8098ebafc4f95fe5a577ff9be7c88d4445b6ef0acf915dad2b538c81b0384d7c9060200160405180910390a150508015610687576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6002545f9073ffffffffffffffffffffffffffffffffffffffff163314610718576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610725838501856114b5565b90505f815f015180602001905181019061073f9190611575565b90505f61075689836040015189866020015161095b565b905087826040015160ff16116107ae5760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff90911660048201526024810189905260440160405180910390fd5b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1661080d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108196001828a610b3e565b602082015182516108449173ffffffffffffffffffffffffffffffffffffffff909116908390610bcc565b9998505050505050505050565b610859610aa6565b6108625f610cd0565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108fa604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b610914610aa6565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109e59060c00160405160208183030381529060405280519060200120610d35565b95945050505050565b6109f6610aa6565b63389a75e1600c52805f526020600c208054421115610a1c57636f5e88185f526004601cfd5b5f9055610a2881610cd0565b50565b610a33610aa6565b8060601b610a4857637448fbae5f526004601cfd5b610a2881610cd0565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c00000000000000000000000000000000000000000000000000000000148061036c575061036c82610d61565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610862576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610b9557815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610bc257835f528560045260245ffd5b5090555050505050565b5f73ffffffffffffffffffffffffffffffffffffffff841615610cc957604051843b610c8757825160408114610c0a5760418114610c445750610cc7565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610c57565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5180861860601b3d119250505f60605280604052610cc7565b631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa905060208260443d01868b5afa9151911691141691505b505b9392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d3e610df7565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061036c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461036c565b5f805f80610e69604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f60208284031215610ed4575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cc9575f80fd5b5f8083601f840112610f13575f80fd5b50813567ffffffffffffffff811115610f2a575f80fd5b6020830191508360208260051b8501011115610f44575f80fd5b9250929050565b5f805f8060408587031215610f5e575f80fd5b843567ffffffffffffffff811115610f74575f80fd5b610f8087828801610f03565b909550935050602085013567ffffffffffffffff811115610f9f575f80fd5b610fab87828801610f03565b95989497509550505050565b5f8083601f840112610fc7575f80fd5b50813567ffffffffffffffff811115610fde575f80fd5b602083019150836020828501011115610f44575f80fd5b5f8060208385031215611006575f80fd5b823567ffffffffffffffff81111561101c575f80fd5b61102885828601610fb7565b90969095509350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a28575f80fd5b5f805f805f60808688031215611069575f80fd5b8535945060208601359350604086013561108281611034565b9250606086013567ffffffffffffffff81111561109d575f80fd5b6110a988828901610fb7565b969995985093965092949392505050565b5f602082840312156110ca575f80fd5b8135610cc981611034565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61115b60e08301896110d5565b828103604084015261116d81896110d5565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156111cf5783518352602093840193909201916001016111b1565b50909b9a5050505050505050505050565b60ff81168114610a28575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561123e5761123e6111ee565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561128b5761128b6111ee565b604052919050565b5f67ffffffffffffffff8211156112ac576112ac6111ee565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f8301126112e7575f80fd5b81356112fa6112f582611293565b611244565b81815284602083860101111561130e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f806080858703121561133d575f80fd5b84359350602085013561134f816111e0565b9250604085013561135f81611034565b9150606085013567ffffffffffffffff81111561137a575f80fd5b611386878288016112d8565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156113cf575f80fd5b81358015158114610cc9575f80fd5b80356113e981611034565b919050565b5f80604083850312156113ff575f80fd5b823567ffffffffffffffff811115611415575f80fd5b8301601f81018513611425575f80fd5b803567ffffffffffffffff81111561143f5761143f6111ee565b8060051b61144f60208201611244565b9182526020818401810192908101908884111561146a575f80fd5b6020850194505b83851015611498578435925061148683611034565b82825260209485019490910190611471565b80965050505050506114ac602084016113de565b90509250929050565b5f602082840312156114c5575f80fd5b813567ffffffffffffffff8111156114db575f80fd5b8201604081850312156114ec575f80fd5b6040805190810167ffffffffffffffff8111828210171561150f5761150f6111ee565b604052813567ffffffffffffffff811115611528575f80fd5b611534868285016112d8565b825250602082013567ffffffffffffffff811115611550575f80fd5b61155c868285016112d8565b602083015250949350505050565b80516113e9816111e0565b5f60208284031215611585575f80fd5b815167ffffffffffffffff81111561159b575f80fd5b8201606081850312156115ac575f80fd5b6115b461121b565b81516115bf81611034565b8152602082015167ffffffffffffffff8111156115da575f80fd5b8201601f810186136115ea575f80fd5b80516115f86112f582611293565b81815287602083850101111561160c575f80fd5b8160208401602083015e5f602083830101528060208501525050506116336040830161156a565b604082015294935050505056fea2646970667358221220720e79ef4c4b95dbdb7785d98e456f0dba68c2942326eb59993b33eb41723cd264736f6c634300081a0033",i6="0x6080604052600436106100ef575f3560e01c8063736c0d5b11610087578063d3de6e7511610057578063d3de6e7514610293578063f04e283e146102c0578063f2fde38b146102d3578063fee81cf4146102e6575f80fd5b8063736c0d5b146101cc57806384b0196e146101fa5780638da5cb5b14610221578063a1d2756f14610274575f80fd5b8063439fab91116100c2578063439fab911461018a57806354d1f13d146101a9578063703b6900146101b1578063715018a6146101c4575f80fd5b806301ffc9a7146100f3578063256929621461012757806328d6183b146101315780634359d28a1461016b575b5f80fd5b3480156100fe575f80fd5b5061011261010d366004610ec4565b610317565b60405190151581526020015b60405180910390f35b61012f610372565b005b34801561013c575f80fd5b506040517fb8ce7b2200000000000000000000000000000000000000000000000000000000815260200161011e565b348015610176575f80fd5b5061012f610185366004610f4b565b6103bf565b348015610195575f80fd5b5061012f6101a4366004610ff5565b6104bb565b61012f61068c565b6101126101bf366004611055565b6106c5565b61012f610851565b3480156101d7575f80fd5b506101126101e63660046110ba565b5f6020819052908152604090205460ff1681565b348015610205575f80fd5b5061020e610864565b60405161011e9796959493929190611121565b34801561022c575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161011e565b34801561027f575f80fd5b5061012f61028e3660046110ba565b61090c565b34801561029e575f80fd5b506102b26102ad36600461132a565b61095b565b60405190815260200161011e565b61012f6102ce3660046110ba565b6109ee565b61012f6102e13660046110ba565b610a2b565b3480156102f1575f80fd5b506102b26103003660046110ba565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b2200000000000000000000000000000000000000000000000000000000148061036c575061036c82610a51565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6103c7610aa6565b828114610400576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156104b45782828281811061041c5761041c611392565b905060200201602081019061043191906113bf565b5f8087878581811061044557610445611392565b905060200201602081019061045a91906110ba565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610402565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561050c5760018160011c14303b106105035763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8061051b848601866113ee565b91509150610541825f8151811061053457610534611392565b6020026020010151610adb565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555f5b82518110156106065760015f808584815181106105a2576105a2611392565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610583565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527f8098ebafc4f95fe5a577ff9be7c88d4445b6ef0acf915dad2b538c81b0384d7c9060200160405180910390a150508015610687576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6002545f9073ffffffffffffffffffffffffffffffffffffffff163314610718576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610725838501856114b5565b90505f815f015180602001905181019061073f9190611575565b90505f61075689836040015189866020015161095b565b905087826040015160ff16116107ae5760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff90911660048201526024810189905260440160405180910390fd5b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1661080d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108196001828a610b3e565b602082015182516108449173ffffffffffffffffffffffffffffffffffffffff909116908390610bcc565b9998505050505050505050565b610859610aa6565b6108625f610cd0565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108fa604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b610914610aa6565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109e59060c00160405160208183030381529060405280519060200120610d35565b95945050505050565b6109f6610aa6565b63389a75e1600c52805f526020600c208054421115610a1c57636f5e88185f526004601cfd5b5f9055610a2881610cd0565b50565b610a33610aa6565b8060601b610a4857637448fbae5f526004601cfd5b610a2881610cd0565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c00000000000000000000000000000000000000000000000000000000148061036c575061036c82610d61565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610862576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610b9557815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610bc257835f528560045260245ffd5b5090555050505050565b5f73ffffffffffffffffffffffffffffffffffffffff841615610cc957604051843b610c8757825160408114610c0a5760418114610c445750610cc7565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610c57565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5180861860601b3d119250505f60605280604052610cc7565b631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa905060208260443d01868b5afa9151911691141691505b505b9392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d3e610df7565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061036c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461036c565b5f805f80610e69604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f60208284031215610ed4575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cc9575f80fd5b5f8083601f840112610f13575f80fd5b50813567ffffffffffffffff811115610f2a575f80fd5b6020830191508360208260051b8501011115610f44575f80fd5b9250929050565b5f805f8060408587031215610f5e575f80fd5b843567ffffffffffffffff811115610f74575f80fd5b610f8087828801610f03565b909550935050602085013567ffffffffffffffff811115610f9f575f80fd5b610fab87828801610f03565b95989497509550505050565b5f8083601f840112610fc7575f80fd5b50813567ffffffffffffffff811115610fde575f80fd5b602083019150836020828501011115610f44575f80fd5b5f8060208385031215611006575f80fd5b823567ffffffffffffffff81111561101c575f80fd5b61102885828601610fb7565b90969095509350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a28575f80fd5b5f805f805f60808688031215611069575f80fd5b8535945060208601359350604086013561108281611034565b9250606086013567ffffffffffffffff81111561109d575f80fd5b6110a988828901610fb7565b969995985093965092949392505050565b5f602082840312156110ca575f80fd5b8135610cc981611034565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61115b60e08301896110d5565b828103604084015261116d81896110d5565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156111cf5783518352602093840193909201916001016111b1565b50909b9a5050505050505050505050565b60ff81168114610a28575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561123e5761123e6111ee565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561128b5761128b6111ee565b604052919050565b5f67ffffffffffffffff8211156112ac576112ac6111ee565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f8301126112e7575f80fd5b81356112fa6112f582611293565b611244565b81815284602083860101111561130e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f806080858703121561133d575f80fd5b84359350602085013561134f816111e0565b9250604085013561135f81611034565b9150606085013567ffffffffffffffff81111561137a575f80fd5b611386878288016112d8565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156113cf575f80fd5b81358015158114610cc9575f80fd5b80356113e981611034565b919050565b5f80604083850312156113ff575f80fd5b823567ffffffffffffffff811115611415575f80fd5b8301601f81018513611425575f80fd5b803567ffffffffffffffff81111561143f5761143f6111ee565b8060051b61144f60208201611244565b9182526020818401810192908101908884111561146a575f80fd5b6020850194505b83851015611498578435925061148683611034565b82825260209485019490910190611471565b80965050505050506114ac602084016113de565b90509250929050565b5f602082840312156114c5575f80fd5b813567ffffffffffffffff8111156114db575f80fd5b8201604081850312156114ec575f80fd5b6040805190810167ffffffffffffffff8111828210171561150f5761150f6111ee565b604052813567ffffffffffffffff811115611528575f80fd5b611534868285016112d8565b825250602082013567ffffffffffffffff811115611550575f80fd5b61155c868285016112d8565b602083015250949350505050565b80516113e9816111e0565b5f60208284031215611585575f80fd5b815167ffffffffffffffff81111561159b575f80fd5b8201606081850312156115ac575f80fd5b6115b461121b565b81516115bf81611034565b8152602082015167ffffffffffffffff8111156115da575f80fd5b8201601f810186136115ea575f80fd5b80516115f86112f582611293565b81815287602083850101111561160c575f80fd5b8160208401602083015e5f602083830101528060208501525050506116336040830161156a565b604082015294935050505056fea2646970667358221220720e79ef4c4b95dbdb7785d98e456f0dba68c2942326eb59993b33eb41723cd264736f6c634300081a0033",s6={},r6={},j0={_format:a6,contractName:t6,sourceName:d6,abi:n6,bytecode:c6,deployedBytecode:i6,linkReferences:s6,deployedLinkReferences:r6};class p6 extends t.BaseError{constructor({docsPath:e}){super(["A constructor was not found on the ABI.","Make sure you are using the correct ABI and that the constructor exists on it."].join(`
2
2
  `),{docsPath:e,name:"AbiConstructorNotFoundError"})}}class Z0 extends t.BaseError{constructor({docsPath:e}){super(["Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.","Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists."].join(`
3
3
  `),{docsPath:e,name:"AbiConstructorParamsNotFoundError"})}}class o6 extends t.BaseError{constructor({expectedLength:e,givenLength:b,type:a}){super([`ABI encoding array length mismatch for type ${a}.`,`Expected length: ${e}`,`Given length: ${b}`].join(`
4
4
  `),{name:"AbiEncodingArrayLengthMismatchError"})}}class u6 extends t.BaseError{constructor({expectedSize:e,value:b}){super(`Size of bytes "${b}" (bytes${t.size(b)}) does not match expected size (bytes${e}).`,{name:"AbiEncodingBytesSizeMismatchError"})}}class y6 extends t.BaseError{constructor({expectedLength:e,givenLength:b}){super(["ABI encoding params/values length mismatch.",`Expected length (params): ${e}`,`Given length (values): ${b}`].join(`
@@ -11,4 +11,4 @@
11
11
  `),{cause:e,metaMessages:["This error could arise when the account does not have enough funds to:"," - pay for the total gas fee,"," - pay for the value to send."," ","The cost of the transaction is calculated as `gas * gas fee + value`, where:"," - `gas` is the amount of gas needed for transaction to execute,"," - `gas fee` is the gas fee,"," - `value` is the amount of ether to send to the recipient."],name:"InsufficientFundsError"})}}Object.defineProperty(l0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/insufficient funds|exceeds transaction sender account balance/});class m0 extends t.BaseError{constructor({cause:e,gas:b}={}){super(`The amount of gas ${b?`(${b}) `:""}provided for the transaction exceeds the limit allowed for the block.`,{cause:e,name:"IntrinsicGasTooHighError"})}}Object.defineProperty(m0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too high|gas limit reached/});class T0 extends t.BaseError{constructor({cause:e,gas:b}={}){super(`The amount of gas ${b?`(${b}) `:""}provided for the transaction is too low.`,{cause:e,name:"IntrinsicGasTooLowError"})}}Object.defineProperty(T0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too low/});class w0 extends t.BaseError{constructor({cause:e}){super("The transaction type is not supported for this chain.",{cause:e,name:"TransactionTypeNotSupportedError"})}}Object.defineProperty(w0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/transaction type not valid/});class n0 extends t.BaseError{constructor({cause:e,maxPriorityFeePerGas:b,maxFeePerGas:a}={}){super([`The provided tip (\`maxPriorityFeePerGas\`${b?` = ${E(b)} gwei`:""}) cannot be higher than the fee cap (\`maxFeePerGas\`${a?` = ${E(a)} gwei`:""}).`].join(`
12
12
  `),{cause:e,name:"TipAboveFeeCapError"})}}Object.defineProperty(n0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max priority fee per gas higher than max fee per gas|tip higher than fee cap/});class M0 extends t.BaseError{constructor({cause:e}){super(`An error occurred while executing: ${e==null?void 0:e.shortMessage}`,{cause:e,name:"UnknownNodeError"})}}function cf(f,e="wei"){return nf(f,Z6[e])}function I0(f){const e=Object.entries(f).map(([a,d])=>d===void 0||d===!1?null:[a,d]).filter(Boolean),b=e.reduce((a,[d])=>Math.max(a,d.length),0);return e.map(([a,d])=>` ${`${a}:`.padEnd(b+1)} ${d}`).join(`
13
13
  `)}class K6 extends t.BaseError{constructor(){super(["Cannot specify both a `gasPrice` and a `maxFeePerGas`/`maxPriorityFeePerGas`.","Use `maxFeePerGas`/`maxPriorityFeePerGas` for EIP-1559 compatible networks, and `gasPrice` for others."].join(`
14
- `),{name:"FeeConflictError"})}}class Y6 extends t.BaseError{constructor({transaction:e}){super("Cannot infer a transaction type from provided transaction.",{metaMessages:["Provided Transaction:","{",I0(e),"}","","To infer the type, either provide:","- a `type` to the Transaction, or","- an EIP-1559 Transaction with `maxFeePerGas`, or","- an EIP-2930 Transaction with `gasPrice` & `accessList`, or","- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or","- an EIP-7702 Transaction with `authorizationList`, or","- a Legacy Transaction with `gasPrice`"],name:"InvalidSerializableTransactionError"})}}class Q6 extends t.BaseError{constructor(e,{account:b,docsPath:a,chain:d,data:n,gas:c,gasPrice:r,maxFeePerGas:i,maxPriorityFeePerGas:s,nonce:p,to:y,value:o}){var l;const T=I0({chain:d&&`${d==null?void 0:d.name} (id: ${d==null?void 0:d.id})`,from:b==null?void 0:b.address,to:y,value:typeof o<"u"&&`${cf(o)} ${((l=d==null?void 0:d.nativeCurrency)==null?void 0:l.symbol)||"ETH"}`,data:n,gas:c,gasPrice:typeof r<"u"&&`${E(r)} gwei`,maxFeePerGas:typeof i<"u"&&`${E(i)} gwei`,maxPriorityFeePerGas:typeof s<"u"&&`${E(s)} gwei`,nonce:p});super(e.shortMessage,{cause:e,docsPath:a,metaMessages:[...e.metaMessages?[...e.metaMessages," "]:[],"Request Arguments:",T].filter(Boolean),name:"TransactionExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}}function sf(f,e){const b=(f.details||"").toLowerCase(),a=f instanceof t.BaseError?f.walk(d=>(d==null?void 0:d.code)===b0.code):f;return a instanceof t.BaseError?new b0({cause:f,message:a.details}):b0.nodeMessage.test(b)?new b0({cause:f,message:f.details}):d0.nodeMessage.test(b)?new d0({cause:f,maxFeePerGas:e==null?void 0:e.maxFeePerGas}):p0.nodeMessage.test(b)?new p0({cause:f,maxFeePerGas:e==null?void 0:e.maxFeePerGas}):o0.nodeMessage.test(b)?new o0({cause:f,nonce:e==null?void 0:e.nonce}):u0.nodeMessage.test(b)?new u0({cause:f,nonce:e==null?void 0:e.nonce}):y0.nodeMessage.test(b)?new y0({cause:f,nonce:e==null?void 0:e.nonce}):l0.nodeMessage.test(b)?new l0({cause:f}):m0.nodeMessage.test(b)?new m0({cause:f,gas:e==null?void 0:e.gas}):T0.nodeMessage.test(b)?new T0({cause:f,gas:e==null?void 0:e.gas}):w0.nodeMessage.test(b)?new w0({cause:f}):n0.nodeMessage.test(b)?new n0({cause:f,maxFeePerGas:e==null?void 0:e.maxFeePerGas,maxPriorityFeePerGas:e==null?void 0:e.maxPriorityFeePerGas}):new M0({cause:f})}function J6(f,{docsPath:e,...b}){const a=(()=>{const d=sf(f,b);return d instanceof M0?f:d})();return new Q6(a,{docsPath:e,...b})}function rf(f,{format:e}){if(!e)return{};const b={};function a(n){const c=Object.keys(n);for(const r of c)r in f&&(b[r]=f[r]),n[r]&&typeof n[r]=="object"&&!Array.isArray(n[r])&&a(n[r])}const d=e(f||{});return a(d),b}const X6={legacy:"0x0",eip2930:"0x1",eip1559:"0x2",eip4844:"0x3",eip7702:"0x4"};function pf(f){const e={};return typeof f.authorizationList<"u"&&(e.authorizationList=f8(f.authorizationList)),typeof f.accessList<"u"&&(e.accessList=f.accessList),typeof f.blobVersionedHashes<"u"&&(e.blobVersionedHashes=f.blobVersionedHashes),typeof f.blobs<"u"&&(typeof f.blobs[0]!="string"?e.blobs=f.blobs.map(b=>t.bytesToHex(b)):e.blobs=f.blobs),typeof f.data<"u"&&(e.data=f.data),typeof f.from<"u"&&(e.from=f.from),typeof f.gas<"u"&&(e.gas=t.numberToHex(f.gas)),typeof f.gasPrice<"u"&&(e.gasPrice=t.numberToHex(f.gasPrice)),typeof f.maxFeePerBlobGas<"u"&&(e.maxFeePerBlobGas=t.numberToHex(f.maxFeePerBlobGas)),typeof f.maxFeePerGas<"u"&&(e.maxFeePerGas=t.numberToHex(f.maxFeePerGas)),typeof f.maxPriorityFeePerGas<"u"&&(e.maxPriorityFeePerGas=t.numberToHex(f.maxPriorityFeePerGas)),typeof f.nonce<"u"&&(e.nonce=t.numberToHex(f.nonce)),typeof f.to<"u"&&(e.to=f.to),typeof f.type<"u"&&(e.type=X6[f.type]),typeof f.value<"u"&&(e.value=t.numberToHex(f.value)),e}function f8(f){return f.map(e=>({address:e.contractAddress,r:e.r,s:e.s,chainId:t.numberToHex(e.chainId),nonce:t.numberToHex(e.nonce),...typeof e.yParity<"u"?{yParity:t.numberToHex(e.yParity)}:{},...typeof e.v<"u"&&typeof e.yParity>"u"?{v:t.numberToHex(e.v)}:{}}))}function x(f,e,b){const a=f[e.name];if(typeof a=="function")return a;const d=f[b];return typeof d=="function"?d:n=>e(f,n)}const e8=2n**256n-1n;function x0(f){const{account:e,gasPrice:b,maxFeePerGas:a,maxPriorityFeePerGas:d,to:n}=f,c=e?t.parseAccount(e):void 0;if(c&&!t.isAddress(c.address))throw new t.InvalidAddressError({address:c.address});if(n&&!t.isAddress(n))throw new t.InvalidAddressError({address:n});if(typeof b<"u"&&(typeof a<"u"||typeof d<"u"))throw new K6;if(a&&a>e8)throw new d0({maxFeePerGas:a});if(d&&a&&d>a)throw new n0({maxFeePerGas:a,maxPriorityFeePerGas:d})}async function of(f){const e=await f.request({method:"eth_chainId"},{dedupe:!0});return t.hexToNumber(e)}class b8 extends t.BaseError{constructor(){super("`baseFeeMultiplier` must be greater than 1.",{name:"BaseFeeScalarError"})}}class A0 extends t.BaseError{constructor(){super("Chain does not support EIP-1559 fees.",{name:"Eip1559FeesNotSupportedError"})}}class a8 extends t.BaseError{constructor({maxPriorityFeePerGas:e}){super(`\`maxFeePerGas\` cannot be less than the \`maxPriorityFeePerGas\` (${E(e)} gwei).`,{name:"MaxFeePerGasTooLowError"})}}class t8 extends t.BaseError{constructor({blockHash:e,blockNumber:b}){let a="Block";e&&(a=`Block at hash "${e}"`),b&&(a=`Block at number "${b}"`),super(`${a} could not be found.`,{name:"BlockNotFoundError"})}}const d8={"0x0":"legacy","0x1":"eip2930","0x2":"eip1559","0x3":"eip4844","0x4":"eip7702"};function n8(f){const e={...f,blockHash:f.blockHash?f.blockHash:null,blockNumber:f.blockNumber?BigInt(f.blockNumber):null,chainId:f.chainId?t.hexToNumber(f.chainId):void 0,gas:f.gas?BigInt(f.gas):void 0,gasPrice:f.gasPrice?BigInt(f.gasPrice):void 0,maxFeePerBlobGas:f.maxFeePerBlobGas?BigInt(f.maxFeePerBlobGas):void 0,maxFeePerGas:f.maxFeePerGas?BigInt(f.maxFeePerGas):void 0,maxPriorityFeePerGas:f.maxPriorityFeePerGas?BigInt(f.maxPriorityFeePerGas):void 0,nonce:f.nonce?t.hexToNumber(f.nonce):void 0,to:f.to?f.to:null,transactionIndex:f.transactionIndex?Number(f.transactionIndex):null,type:f.type?d8[f.type]:void 0,typeHex:f.type?f.type:void 0,value:f.value?BigInt(f.value):void 0,v:f.v?BigInt(f.v):void 0};return f.authorizationList&&(e.authorizationList=c8(f.authorizationList)),e.yParity=(()=>{if(f.yParity)return Number(f.yParity);if(typeof e.v=="bigint"){if(e.v===0n||e.v===27n)return 0;if(e.v===1n||e.v===28n)return 1;if(e.v>=35n)return e.v%2n===0n?1:0}})(),e.type==="legacy"&&(delete e.accessList,delete e.maxFeePerBlobGas,delete e.maxFeePerGas,delete e.maxPriorityFeePerGas,delete e.yParity),e.type==="eip2930"&&(delete e.maxFeePerBlobGas,delete e.maxFeePerGas,delete e.maxPriorityFeePerGas),e.type==="eip1559"&&delete e.maxFeePerBlobGas,e}function c8(f){return f.map(e=>({contractAddress:e.address,chainId:Number(e.chainId),nonce:Number(e.nonce),r:e.r,s:e.s,yParity:Number(e.yParity)}))}function i8(f){const e=(f.transactions??[]).map(b=>typeof b=="string"?b:n8(b));return{...f,baseFeePerGas:f.baseFeePerGas?BigInt(f.baseFeePerGas):null,blobGasUsed:f.blobGasUsed?BigInt(f.blobGasUsed):void 0,difficulty:f.difficulty?BigInt(f.difficulty):void 0,excessBlobGas:f.excessBlobGas?BigInt(f.excessBlobGas):void 0,gasLimit:f.gasLimit?BigInt(f.gasLimit):void 0,gasUsed:f.gasUsed?BigInt(f.gasUsed):void 0,hash:f.hash?f.hash:null,logsBloom:f.logsBloom?f.logsBloom:null,nonce:f.nonce?f.nonce:null,number:f.number?BigInt(f.number):null,size:f.size?BigInt(f.size):void 0,timestamp:f.timestamp?BigInt(f.timestamp):void 0,transactions:e,totalDifficulty:f.totalDifficulty?BigInt(f.totalDifficulty):null}}async function c0(f,{blockHash:e,blockNumber:b,blockTag:a,includeTransactions:d}={}){var p,y,o;const n=a??"latest",c=d??!1,r=b!==void 0?t.numberToHex(b):void 0;let i=null;if(e?i=await f.request({method:"eth_getBlockByHash",params:[e,c]},{dedupe:!0}):i=await f.request({method:"eth_getBlockByNumber",params:[r||n,c]},{dedupe:!!r}),!i)throw new t8({blockHash:e,blockNumber:b});return(((o=(y=(p=f.chain)==null?void 0:p.formatters)==null?void 0:y.block)==null?void 0:o.format)||i8)(i)}async function uf(f){const e=await f.request({method:"eth_gasPrice"});return BigInt(e)}async function s8(f,e){var n,c;const{block:b,chain:a=f.chain,request:d}=e||{};try{const r=((n=a==null?void 0:a.fees)==null?void 0:n.maxPriorityFeePerGas)??((c=a==null?void 0:a.fees)==null?void 0:c.defaultPriorityFee);if(typeof r=="function"){const s=b||await x(f,c0,"getBlock")({}),p=await r({block:s,client:f,request:d});if(p===null)throw new Error;return p}if(typeof r<"u")return r;const i=await f.request({method:"eth_maxPriorityFeePerGas"});return t.hexToBigInt(i)}catch{const[r,i]=await Promise.all([b?Promise.resolve(b):x(f,c0,"getBlock")({}),x(f,uf,"getGasPrice")({})]);if(typeof r.baseFeePerGas!="bigint")throw new A0;const s=i-r.baseFeePerGas;return s<0n?0n:s}}async function Y0(f,e){var o,T;const{block:b,chain:a=f.chain,request:d,type:n="eip1559"}=e||{},c=await(async()=>{var l,v;return typeof((l=a==null?void 0:a.fees)==null?void 0:l.baseFeeMultiplier)=="function"?a.fees.baseFeeMultiplier({block:b,client:f,request:d}):((v=a==null?void 0:a.fees)==null?void 0:v.baseFeeMultiplier)??1.2})();if(c<1)throw new b8;const i=10**(((o=c.toString().split(".")[1])==null?void 0:o.length)??0),s=l=>l*BigInt(Math.ceil(c*i))/BigInt(i),p=b||await x(f,c0,"getBlock")({});if(typeof((T=a==null?void 0:a.fees)==null?void 0:T.estimateFeesPerGas)=="function"){const l=await a.fees.estimateFeesPerGas({block:b,client:f,multiply:s,request:d,type:n});if(l!==null)return l}if(n==="eip1559"){if(typeof p.baseFeePerGas!="bigint")throw new A0;const l=typeof(d==null?void 0:d.maxPriorityFeePerGas)=="bigint"?d.maxPriorityFeePerGas:await s8(f,{block:p,chain:a,request:d}),v=s(p.baseFeePerGas);return{maxFeePerGas:(d==null?void 0:d.maxFeePerGas)??v+l,maxPriorityFeePerGas:l}}return{gasPrice:(d==null?void 0:d.gasPrice)??s(await x(f,uf,"getGasPrice")({}))}}class r8 extends t.BaseError{constructor(e,{account:b,docsPath:a,chain:d,data:n,gas:c,gasPrice:r,maxFeePerGas:i,maxPriorityFeePerGas:s,nonce:p,to:y,value:o}){var l;const T=I0({from:b==null?void 0:b.address,to:y,value:typeof o<"u"&&`${cf(o)} ${((l=d==null?void 0:d.nativeCurrency)==null?void 0:l.symbol)||"ETH"}`,data:n,gas:c,gasPrice:typeof r<"u"&&`${E(r)} gwei`,maxFeePerGas:typeof i<"u"&&`${E(i)} gwei`,maxPriorityFeePerGas:typeof s<"u"&&`${E(s)} gwei`,nonce:p});super(e.shortMessage,{cause:e,docsPath:a,metaMessages:[...e.metaMessages?[...e.metaMessages," "]:[],"Estimate Gas Arguments:",T].filter(Boolean),name:"EstimateGasExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}}function p8(f,{docsPath:e,...b}){const a=(()=>{const d=sf(f,b);return d instanceof M0?f:d})();return new r8(a,{docsPath:e,...b})}class o8 extends t.BaseError{constructor({address:e}){super(`State for account "${e}" is set multiple times.`,{name:"AccountStateConflictError"})}}class u8 extends t.BaseError{constructor(){super("state and stateDiff are set on the same account.",{name:"StateAssignmentConflictError"})}}function Q0(f){if(!(!f||f.length===0))return f.reduce((e,{slot:b,value:a})=>{if(b.length!==66)throw new t.InvalidBytesLengthError({size:b.length,targetSize:66,type:"hex"});if(a.length!==66)throw new t.InvalidBytesLengthError({size:a.length,targetSize:66,type:"hex"});return e[b]=a,e},{})}function y8(f){const{balance:e,nonce:b,state:a,stateDiff:d,code:n}=f,c={};if(n!==void 0&&(c.code=n),e!==void 0&&(c.balance=t.numberToHex(e)),b!==void 0&&(c.nonce=t.numberToHex(b)),a!==void 0&&(c.state=Q0(a)),d!==void 0){if(c.state)throw new u8;c.stateDiff=Q0(d)}return c}function l8(f){if(!f)return;const e={};for(const{address:b,...a}of f){if(!t.isAddress(b,{strict:!1}))throw new t.InvalidAddressError({address:b});if(e[b])throw new o8({address:b});e[b]=y8(a)}return e}async function m8(f,{address:e,blockNumber:b,blockTag:a="latest"}){const d=b?t.numberToHex(b):void 0,n=await f.request({method:"eth_getBalance",params:[e,d||a]});return BigInt(n)}async function T8(f,e){var d,n,c;const{account:b=f.account}=e,a=b?t.parseAccount(b):void 0;try{let C=function(D){const{block:$,request:z,rpcStateOverride:O}=D;return f.request({method:"eth_estimateGas",params:O?[z,$??"latest",O]:$?[z,$]:[z]})};const{accessList:r,authorizationList:i,blobs:s,blobVersionedHashes:p,blockNumber:y,blockTag:o,data:T,gas:l,gasPrice:v,maxFeePerBlobGas:m,maxFeePerGas:w,maxPriorityFeePerGas:g,nonce:M,value:H,stateOverride:R,...A}=await hf(f,{...e,parameters:(a==null?void 0:a.type)==="local"?void 0:["blobVersionedHashes"]}),N=(y?t.numberToHex(y):void 0)||o,P=l8(R),k=await(async()=>{if(A.to)return A.to;if(i&&i.length>0)return await df({authorization:i[0]}).catch(()=>{throw new t.BaseError("`to` is required. Could not infer from `authorizationList`")})})();x0(e);const F=(c=(n=(d=f.chain)==null?void 0:d.formatters)==null?void 0:n.transactionRequest)==null?void 0:c.format,I=(F||pf)({...rf(A,{format:F}),from:a==null?void 0:a.address,accessList:r,authorizationList:i,blobs:s,blobVersionedHashes:p,data:T,gas:l,gasPrice:v,maxFeePerBlobGas:m,maxFeePerGas:w,maxPriorityFeePerGas:g,nonce:M,to:k,value:H});let _=BigInt(await C({block:N,request:I,rpcStateOverride:P}));if(i){const D=await m8(f,{address:I.from}),$=await Promise.all(i.map(async z=>{const{contractAddress:O}=z,L=await C({block:N,request:{authorizationList:void 0,data:T,from:a==null?void 0:a.address,to:O,value:t.numberToHex(D)},rpcStateOverride:P}).catch(()=>100000n);return 2n*BigInt(L)}));_+=$.reduce((z,O)=>z+O,0n)}return _}catch(r){throw p8(r,{...e,account:a,chain:f.chain})}}async function w8(f,{address:e,blockTag:b="latest",blockNumber:a}){const d=await f.request({method:"eth_getTransactionCount",params:[e,a?t.numberToHex(a):b]},{dedupe:!!a});return t.hexToNumber(d)}function yf(f){const{kzg:e}=f,b=f.to??(typeof f.blobs[0]=="string"?"hex":"bytes"),a=typeof f.blobs[0]=="string"?f.blobs.map(n=>t.hexToBytes(n)):f.blobs,d=[];for(const n of a)d.push(Uint8Array.from(e.blobToKzgCommitment(n)));return b==="bytes"?d:d.map(n=>t.bytesToHex(n))}function lf(f){const{kzg:e}=f,b=f.to??(typeof f.blobs[0]=="string"?"hex":"bytes"),a=typeof f.blobs[0]=="string"?f.blobs.map(c=>t.hexToBytes(c)):f.blobs,d=typeof f.commitments[0]=="string"?f.commitments.map(c=>t.hexToBytes(c)):f.commitments,n=[];for(let c=0;c<a.length;c++){const r=a[c],i=d[c];n.push(Uint8Array.from(e.computeBlobKzgProof(r,i)))}return b==="bytes"?n:n.map(c=>t.bytesToHex(c))}function h8(f,e){return t.sha256(t.isHex(f,{strict:!1})?t.toBytes(f):f)}function v8(f){const{commitment:e,version:b=1}=f,a=f.to??(typeof e=="string"?"hex":"bytes"),d=h8(e);return d.set([b],0),a==="bytes"?d:t.bytesToHex(d)}function g8(f){const{commitments:e,version:b}=f,a=f.to??(typeof e[0]=="string"?"hex":"bytes"),d=[];for(const n of e)d.push(v8({commitment:n,to:a,version:b}));return d}const J0=6,mf=32,E0=4096,Tf=mf*E0,X0=Tf*J0-1-1*E0*J0;class M8 extends t.BaseError{constructor({maxSize:e,size:b}){super("Blob size is too large.",{metaMessages:[`Max: ${e} bytes`,`Given: ${b} bytes`],name:"BlobSizeTooLargeError"})}}class I8 extends t.BaseError{constructor(){super("Blob data must not be empty.",{name:"EmptyBlobError"})}}function x8(f){const e=f.to??(typeof f.data=="string"?"hex":"bytes"),b=typeof f.data=="string"?t.hexToBytes(f.data):f.data,a=t.size(b);if(!a)throw new I8;if(a>X0)throw new M8({maxSize:X0,size:a});const d=[];let n=!0,c=0;for(;n;){const r=bf(new Uint8Array(Tf));let i=0;for(;i<E0;){const s=b.slice(c,c+(mf-1));if(r.pushByte(0),r.pushBytes(s),s.length<31){r.pushByte(128),n=!1;break}i++,c+=31}d.push(r)}return e==="bytes"?d.map(r=>r.bytes):d.map(r=>t.bytesToHex(r.bytes))}function A8(f){const{data:e,kzg:b,to:a}=f,d=f.blobs??x8({data:e,to:a}),n=f.commitments??yf({blobs:d,kzg:b,to:a}),c=f.proofs??lf({blobs:d,commitments:n,kzg:b,to:a}),r=[];for(let i=0;i<d.length;i++)r.push({blob:d[i],commitment:n[i],proof:c[i]});return r}function E8(f){if(f.type)return f.type;if(typeof f.authorizationList<"u")return"eip7702";if(typeof f.blobs<"u"||typeof f.blobVersionedHashes<"u"||typeof f.maxFeePerBlobGas<"u"||typeof f.sidecars<"u")return"eip4844";if(typeof f.maxFeePerGas<"u"||typeof f.maxPriorityFeePerGas<"u")return"eip1559";if(typeof f.gasPrice<"u")return typeof f.accessList<"u"?"eip2930":"legacy";throw new Y6({transaction:f})}const wf=["blobVersionedHashes","chainId","fees","gas","nonce","type"];async function hf(f,e){const{account:b=f.account,blobs:a,chain:d,gas:n,kzg:c,nonce:r,nonceManager:i,parameters:s=wf,type:p}=e,y=b&&t.parseAccount(b),o={...e,...y?{from:y==null?void 0:y.address}:{}};let T;async function l(){return T||(T=await x(f,c0,"getBlock")({blockTag:"latest"}),T)}let v;async function m(){return v||(d?d.id:typeof e.chainId<"u"?e.chainId:(v=await x(f,of,"getChainId")({}),v))}if((s.includes("blobVersionedHashes")||s.includes("sidecars"))&&a&&c){const w=yf({blobs:a,kzg:c});if(s.includes("blobVersionedHashes")){const g=g8({commitments:w,to:"hex"});o.blobVersionedHashes=g}if(s.includes("sidecars")){const g=lf({blobs:a,commitments:w,kzg:c}),M=A8({blobs:a,commitments:w,proofs:g,to:"hex"});o.sidecars=M}}if(s.includes("chainId")&&(o.chainId=await m()),s.includes("nonce")&&typeof r>"u"&&y)if(i){const w=await m();o.nonce=await i.consume({address:y.address,chainId:w,client:f})}else o.nonce=await x(f,w8,"getTransactionCount")({address:y.address,blockTag:"pending"});if((s.includes("fees")||s.includes("type"))&&typeof p>"u")try{o.type=E8(o)}catch{const w=await l();o.type=typeof(w==null?void 0:w.baseFeePerGas)=="bigint"?"eip1559":"legacy"}if(s.includes("fees"))if(o.type!=="legacy"&&o.type!=="eip2930"){if(typeof o.maxFeePerGas>"u"||typeof o.maxPriorityFeePerGas>"u"){const w=await l(),{maxFeePerGas:g,maxPriorityFeePerGas:M}=await Y0(f,{block:w,chain:d,request:o});if(typeof e.maxPriorityFeePerGas>"u"&&e.maxFeePerGas&&e.maxFeePerGas<M)throw new a8({maxPriorityFeePerGas:M});o.maxPriorityFeePerGas=M,o.maxFeePerGas=g}}else{if(typeof e.maxFeePerGas<"u"||typeof e.maxPriorityFeePerGas<"u")throw new A0;const w=await l(),{gasPrice:g}=await Y0(f,{block:w,chain:d,request:o,type:"legacy"});o.gasPrice=g}return s.includes("gas")&&typeof n>"u"&&(o.gas=await x(f,T8,"estimateGas")({...o,account:y&&{address:y.address,type:"json-rpc"}})),x0(o),delete o.parameters,o}async function R8(f,{serializedTransaction:e}){return f.request({method:"eth_sendRawTransaction",params:[e]},{retryCount:0})}const r0=new t.LruMap(128);async function O8(f,e){var w,g,M,H;const{account:b=f.account,chain:a=f.chain,accessList:d,authorizationList:n,blobs:c,data:r,gas:i,gasPrice:s,maxFeePerBlobGas:p,maxFeePerGas:y,maxPriorityFeePerGas:o,nonce:T,value:l,...v}=e;if(typeof b>"u")throw new N6({docsPath:"/docs/actions/wallet/sendTransaction"});const m=b?t.parseAccount(b):null;try{x0(e);const R=await(async()=>{if(e.to)return e.to;if(n&&n.length>0)return await df({authorization:n[0]}).catch(()=>{throw new t.BaseError("`to` is required. Could not infer from `authorizationList`.")})})();if((m==null?void 0:m.type)==="json-rpc"||m===null){let A;a!==null&&(A=await x(f,of,"getChainId")({}),j6({currentChainId:A,chain:a}));const B=(M=(g=(w=f.chain)==null?void 0:w.formatters)==null?void 0:g.transactionRequest)==null?void 0:M.format,P=(B||pf)({...rf(v,{format:B}),accessList:d,authorizationList:n,blobs:c,chainId:A,data:r,from:m==null?void 0:m.address,gas:i,gasPrice:s,maxFeePerBlobGas:p,maxFeePerGas:y,maxPriorityFeePerGas:o,nonce:T,to:R,value:l}),k=r0.get(f.uid),F=k?"wallet_sendTransaction":"eth_sendTransaction";try{return await f.request({method:F,params:[P]},{retryCount:0})}catch(S){if(k===!1)throw S;const I=S;if(I.name==="InvalidInputRpcError"||I.name==="InvalidParamsRpcError"||I.name==="MethodNotFoundRpcError"||I.name==="MethodNotSupportedRpcError")return await f.request({method:"wallet_sendTransaction",params:[P]},{retryCount:0}).then(C=>(r0.set(f.uid,!0),C)).catch(C=>{const _=C;throw _.name==="MethodNotFoundRpcError"||_.name==="MethodNotSupportedRpcError"?(r0.set(f.uid,!1),I):_});throw I}}if((m==null?void 0:m.type)==="local"){const A=await x(f,hf,"prepareTransactionRequest")({account:m,accessList:d,authorizationList:n,blobs:c,chain:a,data:r,gas:i,gasPrice:s,maxFeePerBlobGas:p,maxFeePerGas:y,maxPriorityFeePerGas:o,nonce:T,nonceManager:m.nonceManager,parameters:[...wf,"sidecars"],value:l,...v,to:R}),B=(H=a==null?void 0:a.serializers)==null?void 0:H.transaction,N=await m.signTransaction(A,{serializer:B});return await x(f,R8,"sendRawTransaction")({serializedTransaction:N})}throw(m==null?void 0:m.type)==="smart"?new s0({metaMessages:["Consider using the `sendUserOperation` Action instead."],docsPath:"/docs/actions/bundler/sendUserOperation",type:"smart"}):new s0({docsPath:"/docs/actions/wallet/sendTransaction",type:m==null?void 0:m.type})}catch(R){throw R instanceof s0?R:J6(R,{...e,account:m,chain:e.chain||void 0})}}function C8(f,e){const{abi:b,args:a,bytecode:d,...n}=e,c=B6({abi:b,args:a,bytecode:d});return O8(f,{...n,data:c})}const t0=new t.LruMap(8192);function _8(f,{enabled:e=!0,id:b}){if(!e||!b)return f();if(t0.get(b))return t0.get(b);const a=f().finally(()=>t0.delete(b));return t0.set(b,a),a}function z8(f,e={}){return async(b,a={})=>{const{dedupe:d=!1,retryDelay:n=150,retryCount:c=3,uid:r}={...e,...a},i=d?t.keccak256(t.stringToHex(`${r}.${t.stringify(b)}`)):void 0;return _8(()=>t.withRetry(async()=>{try{return await f(b)}catch(s){const p=s;switch(p.code){case t.ParseRpcError.code:throw new t.ParseRpcError(p);case t.InvalidRequestRpcError.code:throw new t.InvalidRequestRpcError(p);case t.MethodNotFoundRpcError.code:throw new t.MethodNotFoundRpcError(p,{method:b.method});case t.InvalidParamsRpcError.code:throw new t.InvalidParamsRpcError(p);case t.InternalRpcError.code:throw new t.InternalRpcError(p);case t.InvalidInputRpcError.code:throw new t.InvalidInputRpcError(p);case t.ResourceNotFoundRpcError.code:throw new t.ResourceNotFoundRpcError(p);case t.ResourceUnavailableRpcError.code:throw new t.ResourceUnavailableRpcError(p);case t.TransactionRejectedRpcError.code:throw new t.TransactionRejectedRpcError(p);case t.MethodNotSupportedRpcError.code:throw new t.MethodNotSupportedRpcError(p,{method:b.method});case t.LimitExceededRpcError.code:throw new t.LimitExceededRpcError(p);case t.JsonRpcVersionUnsupportedError.code:throw new t.JsonRpcVersionUnsupportedError(p);case t.UserRejectedRequestError.code:throw new t.UserRejectedRequestError(p);case t.UnauthorizedProviderError.code:throw new t.UnauthorizedProviderError(p);case t.UnsupportedProviderMethodError.code:throw new t.UnsupportedProviderMethodError(p);case t.ProviderDisconnectedError.code:throw new t.ProviderDisconnectedError(p);case t.ChainDisconnectedError.code:throw new t.ChainDisconnectedError(p);case t.SwitchChainError.code:throw new t.SwitchChainError(p);case 5e3:throw new t.UserRejectedRequestError(p);default:throw s instanceof t.BaseError?s:new t.UnknownRpcError(p)}}},{delay:({count:s,error:p})=>{var y;if(p&&p instanceof t.HttpRequestError){const o=(y=p==null?void 0:p.headers)==null?void 0:y.get("Retry-After");if(o!=null&&o.match(/\d/))return Number.parseInt(o)*1e3}return~~(1<<s)*n},retryCount:c,shouldRetry:({error:s})=>B8(s)}),{enabled:d,id:i})}}function B8(f){return"code"in f&&typeof f.code=="number"?f.code===-1||f.code===t.LimitExceededRpcError.code||f.code===t.InternalRpcError.code:f instanceof t.HttpRequestError&&f.status?f.status===403||f.status===408||f.status===413||f.status===429||f.status===500||f.status===502||f.status===503||f.status===504:!0}function N8(f,e,b){const a=f[e.name];if(typeof a=="function")return a;const d=f[b];return typeof d=="function"?d:n=>e(f,n)}function P8({key:f,name:e,request:b,retryCount:a=3,retryDelay:d=150,timeout:n,type:c},r){const i=t.uid();return{config:{key:f,name:e,request:b,retryCount:a,retryDelay:d,timeout:n,type:c},request:z8(b,{retryCount:a,retryDelay:d,uid:i}),value:r}}function $8(f,e={}){const{key:b="custom",name:a="Custom Provider",retryDelay:d}=e;return({retryCount:n})=>P8({key:b,name:a,request:f.request.bind(f),retryCount:e.retryCount??n,retryDelay:d,type:"custom"})}async function L8(f,e={}){let b;if(e.connector){const{connector:s}=e;if(f.state.status==="reconnecting"&&!s.getAccounts&&!s.getChainId)throw new t.ConnectorUnavailableReconnectingError({connector:s});const[p,y]=await Promise.all([s.getAccounts(),s.getChainId()]);b={accounts:p,chainId:y,connector:s}}else b=f.state.connections.get(f.state.current);if(!b)throw new t.ConnectorNotConnectedError;const a=e.chainId??b.chainId,d=await b.connector.getChainId();if(d!==b.chainId)throw new t.ConnectorChainMismatchError({connectionChainId:b.chainId,connectorChainId:d});const n=b.connector;if(n.getClient)return n.getClient({chainId:a});const c=t.parseAccount(e.account??b.accounts[0]);if(c.address=t.getAddress(c.address),e.account&&!b.accounts.some(s=>s.toLowerCase()===c.address.toLowerCase()))throw new t.ConnectorAccountNotFoundError({address:c.address,connector:n});const r=f.chains.find(s=>s.id===a),i=await b.connector.getProvider({chainId:a});return t.createClient({account:c,chain:r,name:"Connector Client",transport:s=>$8(i)({...s,retryCount:0})})}async function h(f,e){const{account:b,chainId:a,connector:d,...n}=e;let c;return typeof b=="object"&&b.type==="local"?c=f.getClient({chainId:a}):c=await L8(f,{account:b,chainId:a,connector:d}),await N8(c,C8,"deployContract")({...n,...b?{account:b}:{},chain:a?{id:a}:null})}const H8=async function(e,b){var L,G,V,U,q,j,Z,W,K,Y,Q,J,X,f0,e0;const a=b.privateKey,d=b.mnemonic,n=b.chain;if(!a&&!d)throw new Error("Must provide `--privateKey` or `--mnemonic` to deploy contracts");if(!n||!t.Chains[n])throw new Error(`Must provide valid \`--chain\` to specify target deployment chain, valid chains are ${Object.keys(t.Chains)}`);const[c,r]=t.getDeployableOptions({chain:n,privateKey:a,mnemonic:d}),{config:i,account:s}=c,p=r.id,y=await new u.BoostRegistry({address:null,...c}).deploy(),O=class O extends u.BoostRegistry{};O.addresses={[p]:y.assertValidAddress()};let o=O;const T=new o({...c,address:y.assertValidAddress()}),l=await new u.BoostCore({...c,registryAddress:T.assertValidAddress(),protocolFeeReceiver:s.address,owner:s.address}).deploy(),v=await u.getDeployedContractAddress(i,h(i,{abi:O0.abi,bytecode:O0.bytecode,account:s})),m=await u.getDeployedContractAddress(i,h(i,{abi:C0.abi,bytecode:C0.bytecode,account:s})),w=await u.getDeployedContractAddress(i,h(i,{abi:B0.abi,bytecode:B0.bytecode,account:s})),g=await u.getDeployedContractAddress(i,h(i,{abi:N0.abi,bytecode:N0.bytecode,account:s})),M=await u.getDeployedContractAddress(i,h(i,{abi:z0.abi,bytecode:z0.bytecode,account:s})),H=await u.getDeployedContractAddress(i,h(i,{abi:P0.abi,bytecode:P0.bytecode,account:s})),R=await u.getDeployedContractAddress(i,h(i,{abi:$0.abi,bytecode:$0.bytecode,account:s})),A=await u.getDeployedContractAddress(i,h(i,{abi:L0.abi,bytecode:L0.bytecode,account:s})),B=await u.getDeployedContractAddress(i,h(i,{abi:H0.abi,bytecode:H0.bytecode,account:s})),N=await u.getDeployedContractAddress(i,h(i,{abi:F0.abi,bytecode:F0.bytecode,account:s})),P=await u.getDeployedContractAddress(i,h(i,{abi:k0.abi,bytecode:k0.bytecode,account:s})),k=await u.getDeployedContractAddress(i,h(i,{abi:G0.abi,bytecode:G0.bytecode,account:s})),F=await u.getDeployedContractAddress(i,h(i,{abi:_0.abi,bytecode:_0.bytecode,account:s})),S=await u.getDeployedContractAddress(i,h(i,{abi:V0.abi,bytecode:V0.bytecode,account:s})),I=await u.getDeployedContractAddress(i,h(i,{abi:D0.abi,bytecode:D0.bytecode,account:s})),C=await u.getDeployedContractAddress(i,h(i,{abi:S0.abi,bytecode:S0.bytecode,account:s})),_=await u.getDeployedContractAddress(i,h(i,{abi:j0.abi,bytecode:j0.bytecode,account:s})),D=await u.getDeployedContractAddress(i,h(i,{abi:U0.abi,bytecode:U0.bytecode,account:s})),$=await u.getDeployedContractAddress(i,h(i,{abi:q0.abi,bytecode:q0.bytecode,args:[s.address,1000000000000000n],account:s})),z={EventAction:(L=class extends u.EventAction{},L.bases={[p]:F},L),SimpleAllowList:(G=class extends u.SimpleAllowList{},G.bases={[p]:w},G),SimpleDenyList:(V=class extends u.SimpleDenyList{},V.bases={[p]:g},V),OffchainAccessList:(U=class extends u.OffchainAccessList{},U.bases={[p]:M},U),ManagedBudget:(q=class extends u.ManagedBudget{},q.bases={[p]:H},q),ManagedBudgetWithFees:(j=class extends u.ManagedBudgetWithFees{},j.bases={[p]:R},j),AllowListIncentive:(Z=class extends u.AllowListIncentive{},Z.bases={[p]:B},Z),CGDAIncentive:(W=class extends u.CGDAIncentive{},W.bases={[p]:N},W),ERC20Incentive:(K=class extends u.ERC20Incentive{},K.bases={[p]:P},K),ERC20VariableIncentive:(Y=class extends u.ERC20VariableIncentive{},Y.bases={[p]:I},Y),ERC20VariableCriteriaIncentiveV2:(Q=class extends u.ERC20VariableCriteriaIncentiveV2{},Q.bases={[p]:C},Q),PointsIncentive:(J=class extends u.PointsIncentive{},J.bases={[p]:S},J),SignerValidator:(X=class extends u.SignerValidator{},X.bases={[p]:_},X),LimitedSignerValidator:(f0=class extends u.LimitedSignerValidator{},f0.bases={[p]:D},f0),PayableLimitedSignerValidator:(e0=class extends u.PayableLimitedSignerValidator{},e0.bases={[p]:$},e0)};for(const[vf,R0]of Object.entries(z))await T.register(R0.registryType,vf,R0.bases[p]);return{BOOST_CORE_ADDRESS:l.assertValidAddress(),BOOST_REGISTRY_ADDRESS:T.assertValidAddress(),CONTRACT_ACTION_BASE:v,EVENT_ACTION_BASE:F,ERC721_MINT_ACTION_BASE:m,SIMPLE_ALLOWLIST_BASE:w,SIMPLE_DENYLIST_BASE:g,OFFCHAIN_ACCESS_LIST_BASE:M,MANAGED_BUDGET_BASE:H,VESTING_BUDGET_BASE:A,ALLOWLIST_INCENTIVE_BASE:B,CGDA_INCENTIVE_BASE:N,ERC20_INCENTIVE_BASE:P,ERC20_VARIABLE_INCENTIVE_BASE:I,ERC20_VARIABLE_CRITERIA_INCENTIVE_V2_BASE:C,ERC1155_INCENTIVE_BASE:k,POINTS_INCENTIVE_BASE:S,SIGNER_VALIDATOR_BASE:_,LIMITED_SIGNER_VALIDATOR_BASE:D,PAYABLE_LIMITED_SIGNER_VALIDATOR_BASE:$}};exports.deploy=H8;
14
+ `),{name:"FeeConflictError"})}}class Y6 extends t.BaseError{constructor({transaction:e}){super("Cannot infer a transaction type from provided transaction.",{metaMessages:["Provided Transaction:","{",I0(e),"}","","To infer the type, either provide:","- a `type` to the Transaction, or","- an EIP-1559 Transaction with `maxFeePerGas`, or","- an EIP-2930 Transaction with `gasPrice` & `accessList`, or","- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or","- an EIP-7702 Transaction with `authorizationList`, or","- a Legacy Transaction with `gasPrice`"],name:"InvalidSerializableTransactionError"})}}class Q6 extends t.BaseError{constructor(e,{account:b,docsPath:a,chain:d,data:n,gas:c,gasPrice:r,maxFeePerGas:i,maxPriorityFeePerGas:s,nonce:p,to:y,value:o}){var l;const T=I0({chain:d&&`${d==null?void 0:d.name} (id: ${d==null?void 0:d.id})`,from:b==null?void 0:b.address,to:y,value:typeof o<"u"&&`${cf(o)} ${((l=d==null?void 0:d.nativeCurrency)==null?void 0:l.symbol)||"ETH"}`,data:n,gas:c,gasPrice:typeof r<"u"&&`${E(r)} gwei`,maxFeePerGas:typeof i<"u"&&`${E(i)} gwei`,maxPriorityFeePerGas:typeof s<"u"&&`${E(s)} gwei`,nonce:p});super(e.shortMessage,{cause:e,docsPath:a,metaMessages:[...e.metaMessages?[...e.metaMessages," "]:[],"Request Arguments:",T].filter(Boolean),name:"TransactionExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}}function sf(f,e){const b=(f.details||"").toLowerCase(),a=f instanceof t.BaseError?f.walk(d=>(d==null?void 0:d.code)===b0.code):f;return a instanceof t.BaseError?new b0({cause:f,message:a.details}):b0.nodeMessage.test(b)?new b0({cause:f,message:f.details}):d0.nodeMessage.test(b)?new d0({cause:f,maxFeePerGas:e==null?void 0:e.maxFeePerGas}):p0.nodeMessage.test(b)?new p0({cause:f,maxFeePerGas:e==null?void 0:e.maxFeePerGas}):o0.nodeMessage.test(b)?new o0({cause:f,nonce:e==null?void 0:e.nonce}):u0.nodeMessage.test(b)?new u0({cause:f,nonce:e==null?void 0:e.nonce}):y0.nodeMessage.test(b)?new y0({cause:f,nonce:e==null?void 0:e.nonce}):l0.nodeMessage.test(b)?new l0({cause:f}):m0.nodeMessage.test(b)?new m0({cause:f,gas:e==null?void 0:e.gas}):T0.nodeMessage.test(b)?new T0({cause:f,gas:e==null?void 0:e.gas}):w0.nodeMessage.test(b)?new w0({cause:f}):n0.nodeMessage.test(b)?new n0({cause:f,maxFeePerGas:e==null?void 0:e.maxFeePerGas,maxPriorityFeePerGas:e==null?void 0:e.maxPriorityFeePerGas}):new M0({cause:f})}function J6(f,{docsPath:e,...b}){const a=(()=>{const d=sf(f,b);return d instanceof M0?f:d})();return new Q6(a,{docsPath:e,...b})}function rf(f,{format:e}){if(!e)return{};const b={};function a(n){const c=Object.keys(n);for(const r of c)r in f&&(b[r]=f[r]),n[r]&&typeof n[r]=="object"&&!Array.isArray(n[r])&&a(n[r])}const d=e(f||{});return a(d),b}const X6={legacy:"0x0",eip2930:"0x1",eip1559:"0x2",eip4844:"0x3",eip7702:"0x4"};function pf(f){const e={};return typeof f.authorizationList<"u"&&(e.authorizationList=f8(f.authorizationList)),typeof f.accessList<"u"&&(e.accessList=f.accessList),typeof f.blobVersionedHashes<"u"&&(e.blobVersionedHashes=f.blobVersionedHashes),typeof f.blobs<"u"&&(typeof f.blobs[0]!="string"?e.blobs=f.blobs.map(b=>t.bytesToHex(b)):e.blobs=f.blobs),typeof f.data<"u"&&(e.data=f.data),typeof f.from<"u"&&(e.from=f.from),typeof f.gas<"u"&&(e.gas=t.numberToHex(f.gas)),typeof f.gasPrice<"u"&&(e.gasPrice=t.numberToHex(f.gasPrice)),typeof f.maxFeePerBlobGas<"u"&&(e.maxFeePerBlobGas=t.numberToHex(f.maxFeePerBlobGas)),typeof f.maxFeePerGas<"u"&&(e.maxFeePerGas=t.numberToHex(f.maxFeePerGas)),typeof f.maxPriorityFeePerGas<"u"&&(e.maxPriorityFeePerGas=t.numberToHex(f.maxPriorityFeePerGas)),typeof f.nonce<"u"&&(e.nonce=t.numberToHex(f.nonce)),typeof f.to<"u"&&(e.to=f.to),typeof f.type<"u"&&(e.type=X6[f.type]),typeof f.value<"u"&&(e.value=t.numberToHex(f.value)),e}function f8(f){return f.map(e=>({address:e.contractAddress,r:e.r,s:e.s,chainId:t.numberToHex(e.chainId),nonce:t.numberToHex(e.nonce),...typeof e.yParity<"u"?{yParity:t.numberToHex(e.yParity)}:{},...typeof e.v<"u"&&typeof e.yParity>"u"?{v:t.numberToHex(e.v)}:{}}))}function x(f,e,b){const a=f[e.name];if(typeof a=="function")return a;const d=f[b];return typeof d=="function"?d:n=>e(f,n)}const e8=2n**256n-1n;function x0(f){const{account:e,gasPrice:b,maxFeePerGas:a,maxPriorityFeePerGas:d,to:n}=f,c=e?t.parseAccount(e):void 0;if(c&&!t.isAddress(c.address))throw new t.InvalidAddressError({address:c.address});if(n&&!t.isAddress(n))throw new t.InvalidAddressError({address:n});if(typeof b<"u"&&(typeof a<"u"||typeof d<"u"))throw new K6;if(a&&a>e8)throw new d0({maxFeePerGas:a});if(d&&a&&d>a)throw new n0({maxFeePerGas:a,maxPriorityFeePerGas:d})}async function of(f){const e=await f.request({method:"eth_chainId"},{dedupe:!0});return t.hexToNumber(e)}class b8 extends t.BaseError{constructor(){super("`baseFeeMultiplier` must be greater than 1.",{name:"BaseFeeScalarError"})}}class A0 extends t.BaseError{constructor(){super("Chain does not support EIP-1559 fees.",{name:"Eip1559FeesNotSupportedError"})}}class a8 extends t.BaseError{constructor({maxPriorityFeePerGas:e}){super(`\`maxFeePerGas\` cannot be less than the \`maxPriorityFeePerGas\` (${E(e)} gwei).`,{name:"MaxFeePerGasTooLowError"})}}class t8 extends t.BaseError{constructor({blockHash:e,blockNumber:b}){let a="Block";e&&(a=`Block at hash "${e}"`),b&&(a=`Block at number "${b}"`),super(`${a} could not be found.`,{name:"BlockNotFoundError"})}}const d8={"0x0":"legacy","0x1":"eip2930","0x2":"eip1559","0x3":"eip4844","0x4":"eip7702"};function n8(f){const e={...f,blockHash:f.blockHash?f.blockHash:null,blockNumber:f.blockNumber?BigInt(f.blockNumber):null,chainId:f.chainId?t.hexToNumber(f.chainId):void 0,gas:f.gas?BigInt(f.gas):void 0,gasPrice:f.gasPrice?BigInt(f.gasPrice):void 0,maxFeePerBlobGas:f.maxFeePerBlobGas?BigInt(f.maxFeePerBlobGas):void 0,maxFeePerGas:f.maxFeePerGas?BigInt(f.maxFeePerGas):void 0,maxPriorityFeePerGas:f.maxPriorityFeePerGas?BigInt(f.maxPriorityFeePerGas):void 0,nonce:f.nonce?t.hexToNumber(f.nonce):void 0,to:f.to?f.to:null,transactionIndex:f.transactionIndex?Number(f.transactionIndex):null,type:f.type?d8[f.type]:void 0,typeHex:f.type?f.type:void 0,value:f.value?BigInt(f.value):void 0,v:f.v?BigInt(f.v):void 0};return f.authorizationList&&(e.authorizationList=c8(f.authorizationList)),e.yParity=(()=>{if(f.yParity)return Number(f.yParity);if(typeof e.v=="bigint"){if(e.v===0n||e.v===27n)return 0;if(e.v===1n||e.v===28n)return 1;if(e.v>=35n)return e.v%2n===0n?1:0}})(),e.type==="legacy"&&(delete e.accessList,delete e.maxFeePerBlobGas,delete e.maxFeePerGas,delete e.maxPriorityFeePerGas,delete e.yParity),e.type==="eip2930"&&(delete e.maxFeePerBlobGas,delete e.maxFeePerGas,delete e.maxPriorityFeePerGas),e.type==="eip1559"&&delete e.maxFeePerBlobGas,e}function c8(f){return f.map(e=>({contractAddress:e.address,chainId:Number(e.chainId),nonce:Number(e.nonce),r:e.r,s:e.s,yParity:Number(e.yParity)}))}function i8(f){const e=(f.transactions??[]).map(b=>typeof b=="string"?b:n8(b));return{...f,baseFeePerGas:f.baseFeePerGas?BigInt(f.baseFeePerGas):null,blobGasUsed:f.blobGasUsed?BigInt(f.blobGasUsed):void 0,difficulty:f.difficulty?BigInt(f.difficulty):void 0,excessBlobGas:f.excessBlobGas?BigInt(f.excessBlobGas):void 0,gasLimit:f.gasLimit?BigInt(f.gasLimit):void 0,gasUsed:f.gasUsed?BigInt(f.gasUsed):void 0,hash:f.hash?f.hash:null,logsBloom:f.logsBloom?f.logsBloom:null,nonce:f.nonce?f.nonce:null,number:f.number?BigInt(f.number):null,size:f.size?BigInt(f.size):void 0,timestamp:f.timestamp?BigInt(f.timestamp):void 0,transactions:e,totalDifficulty:f.totalDifficulty?BigInt(f.totalDifficulty):null}}async function c0(f,{blockHash:e,blockNumber:b,blockTag:a,includeTransactions:d}={}){var p,y,o;const n=a??"latest",c=d??!1,r=b!==void 0?t.numberToHex(b):void 0;let i=null;if(e?i=await f.request({method:"eth_getBlockByHash",params:[e,c]},{dedupe:!0}):i=await f.request({method:"eth_getBlockByNumber",params:[r||n,c]},{dedupe:!!r}),!i)throw new t8({blockHash:e,blockNumber:b});return(((o=(y=(p=f.chain)==null?void 0:p.formatters)==null?void 0:y.block)==null?void 0:o.format)||i8)(i)}async function uf(f){const e=await f.request({method:"eth_gasPrice"});return BigInt(e)}async function s8(f,e){var n,c;const{block:b,chain:a=f.chain,request:d}=e||{};try{const r=((n=a==null?void 0:a.fees)==null?void 0:n.maxPriorityFeePerGas)??((c=a==null?void 0:a.fees)==null?void 0:c.defaultPriorityFee);if(typeof r=="function"){const s=b||await x(f,c0,"getBlock")({}),p=await r({block:s,client:f,request:d});if(p===null)throw new Error;return p}if(typeof r<"u")return r;const i=await f.request({method:"eth_maxPriorityFeePerGas"});return t.hexToBigInt(i)}catch{const[r,i]=await Promise.all([b?Promise.resolve(b):x(f,c0,"getBlock")({}),x(f,uf,"getGasPrice")({})]);if(typeof r.baseFeePerGas!="bigint")throw new A0;const s=i-r.baseFeePerGas;return s<0n?0n:s}}async function Y0(f,e){var o,T;const{block:b,chain:a=f.chain,request:d,type:n="eip1559"}=e||{},c=await(async()=>{var l,v;return typeof((l=a==null?void 0:a.fees)==null?void 0:l.baseFeeMultiplier)=="function"?a.fees.baseFeeMultiplier({block:b,client:f,request:d}):((v=a==null?void 0:a.fees)==null?void 0:v.baseFeeMultiplier)??1.2})();if(c<1)throw new b8;const i=10**(((o=c.toString().split(".")[1])==null?void 0:o.length)??0),s=l=>l*BigInt(Math.ceil(c*i))/BigInt(i),p=b||await x(f,c0,"getBlock")({});if(typeof((T=a==null?void 0:a.fees)==null?void 0:T.estimateFeesPerGas)=="function"){const l=await a.fees.estimateFeesPerGas({block:b,client:f,multiply:s,request:d,type:n});if(l!==null)return l}if(n==="eip1559"){if(typeof p.baseFeePerGas!="bigint")throw new A0;const l=typeof(d==null?void 0:d.maxPriorityFeePerGas)=="bigint"?d.maxPriorityFeePerGas:await s8(f,{block:p,chain:a,request:d}),v=s(p.baseFeePerGas);return{maxFeePerGas:(d==null?void 0:d.maxFeePerGas)??v+l,maxPriorityFeePerGas:l}}return{gasPrice:(d==null?void 0:d.gasPrice)??s(await x(f,uf,"getGasPrice")({}))}}class r8 extends t.BaseError{constructor(e,{account:b,docsPath:a,chain:d,data:n,gas:c,gasPrice:r,maxFeePerGas:i,maxPriorityFeePerGas:s,nonce:p,to:y,value:o}){var l;const T=I0({from:b==null?void 0:b.address,to:y,value:typeof o<"u"&&`${cf(o)} ${((l=d==null?void 0:d.nativeCurrency)==null?void 0:l.symbol)||"ETH"}`,data:n,gas:c,gasPrice:typeof r<"u"&&`${E(r)} gwei`,maxFeePerGas:typeof i<"u"&&`${E(i)} gwei`,maxPriorityFeePerGas:typeof s<"u"&&`${E(s)} gwei`,nonce:p});super(e.shortMessage,{cause:e,docsPath:a,metaMessages:[...e.metaMessages?[...e.metaMessages," "]:[],"Estimate Gas Arguments:",T].filter(Boolean),name:"EstimateGasExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}}function p8(f,{docsPath:e,...b}){const a=(()=>{const d=sf(f,b);return d instanceof M0?f:d})();return new r8(a,{docsPath:e,...b})}class o8 extends t.BaseError{constructor({address:e}){super(`State for account "${e}" is set multiple times.`,{name:"AccountStateConflictError"})}}class u8 extends t.BaseError{constructor(){super("state and stateDiff are set on the same account.",{name:"StateAssignmentConflictError"})}}function Q0(f){if(!(!f||f.length===0))return f.reduce((e,{slot:b,value:a})=>{if(b.length!==66)throw new t.InvalidBytesLengthError({size:b.length,targetSize:66,type:"hex"});if(a.length!==66)throw new t.InvalidBytesLengthError({size:a.length,targetSize:66,type:"hex"});return e[b]=a,e},{})}function y8(f){const{balance:e,nonce:b,state:a,stateDiff:d,code:n}=f,c={};if(n!==void 0&&(c.code=n),e!==void 0&&(c.balance=t.numberToHex(e)),b!==void 0&&(c.nonce=t.numberToHex(b)),a!==void 0&&(c.state=Q0(a)),d!==void 0){if(c.state)throw new u8;c.stateDiff=Q0(d)}return c}function l8(f){if(!f)return;const e={};for(const{address:b,...a}of f){if(!t.isAddress(b,{strict:!1}))throw new t.InvalidAddressError({address:b});if(e[b])throw new o8({address:b});e[b]=y8(a)}return e}async function m8(f,{address:e,blockNumber:b,blockTag:a="latest"}){const d=b?t.numberToHex(b):void 0,n=await f.request({method:"eth_getBalance",params:[e,d||a]});return BigInt(n)}async function T8(f,e){var d,n,c;const{account:b=f.account}=e,a=b?t.parseAccount(b):void 0;try{let C=function(D){const{block:$,request:z,rpcStateOverride:O}=D;return f.request({method:"eth_estimateGas",params:O?[z,$??"latest",O]:$?[z,$]:[z]})};const{accessList:r,authorizationList:i,blobs:s,blobVersionedHashes:p,blockNumber:y,blockTag:o,data:T,gas:l,gasPrice:v,maxFeePerBlobGas:m,maxFeePerGas:w,maxPriorityFeePerGas:g,nonce:M,value:H,stateOverride:R,...A}=await hf(f,{...e,parameters:(a==null?void 0:a.type)==="local"?void 0:["blobVersionedHashes"]}),N=(y?t.numberToHex(y):void 0)||o,P=l8(R),k=await(async()=>{if(A.to)return A.to;if(i&&i.length>0)return await df({authorization:i[0]}).catch(()=>{throw new t.BaseError("`to` is required. Could not infer from `authorizationList`")})})();x0(e);const F=(c=(n=(d=f.chain)==null?void 0:d.formatters)==null?void 0:n.transactionRequest)==null?void 0:c.format,I=(F||pf)({...rf(A,{format:F}),from:a==null?void 0:a.address,accessList:r,authorizationList:i,blobs:s,blobVersionedHashes:p,data:T,gas:l,gasPrice:v,maxFeePerBlobGas:m,maxFeePerGas:w,maxPriorityFeePerGas:g,nonce:M,to:k,value:H});let _=BigInt(await C({block:N,request:I,rpcStateOverride:P}));if(i){const D=await m8(f,{address:I.from}),$=await Promise.all(i.map(async z=>{const{contractAddress:O}=z,L=await C({block:N,request:{authorizationList:void 0,data:T,from:a==null?void 0:a.address,to:O,value:t.numberToHex(D)},rpcStateOverride:P}).catch(()=>100000n);return 2n*BigInt(L)}));_+=$.reduce((z,O)=>z+O,0n)}return _}catch(r){throw p8(r,{...e,account:a,chain:f.chain})}}async function w8(f,{address:e,blockTag:b="latest",blockNumber:a}){const d=await f.request({method:"eth_getTransactionCount",params:[e,a?t.numberToHex(a):b]},{dedupe:!!a});return t.hexToNumber(d)}function yf(f){const{kzg:e}=f,b=f.to??(typeof f.blobs[0]=="string"?"hex":"bytes"),a=typeof f.blobs[0]=="string"?f.blobs.map(n=>t.hexToBytes(n)):f.blobs,d=[];for(const n of a)d.push(Uint8Array.from(e.blobToKzgCommitment(n)));return b==="bytes"?d:d.map(n=>t.bytesToHex(n))}function lf(f){const{kzg:e}=f,b=f.to??(typeof f.blobs[0]=="string"?"hex":"bytes"),a=typeof f.blobs[0]=="string"?f.blobs.map(c=>t.hexToBytes(c)):f.blobs,d=typeof f.commitments[0]=="string"?f.commitments.map(c=>t.hexToBytes(c)):f.commitments,n=[];for(let c=0;c<a.length;c++){const r=a[c],i=d[c];n.push(Uint8Array.from(e.computeBlobKzgProof(r,i)))}return b==="bytes"?n:n.map(c=>t.bytesToHex(c))}function h8(f,e){return t.sha256(t.isHex(f,{strict:!1})?t.toBytes(f):f)}function v8(f){const{commitment:e,version:b=1}=f,a=f.to??(typeof e=="string"?"hex":"bytes"),d=h8(e);return d.set([b],0),a==="bytes"?d:t.bytesToHex(d)}function g8(f){const{commitments:e,version:b}=f,a=f.to??(typeof e[0]=="string"?"hex":"bytes"),d=[];for(const n of e)d.push(v8({commitment:n,to:a,version:b}));return d}const J0=6,mf=32,E0=4096,Tf=mf*E0,X0=Tf*J0-1-1*E0*J0;class M8 extends t.BaseError{constructor({maxSize:e,size:b}){super("Blob size is too large.",{metaMessages:[`Max: ${e} bytes`,`Given: ${b} bytes`],name:"BlobSizeTooLargeError"})}}class I8 extends t.BaseError{constructor(){super("Blob data must not be empty.",{name:"EmptyBlobError"})}}function x8(f){const e=f.to??(typeof f.data=="string"?"hex":"bytes"),b=typeof f.data=="string"?t.hexToBytes(f.data):f.data,a=t.size(b);if(!a)throw new I8;if(a>X0)throw new M8({maxSize:X0,size:a});const d=[];let n=!0,c=0;for(;n;){const r=bf(new Uint8Array(Tf));let i=0;for(;i<E0;){const s=b.slice(c,c+(mf-1));if(r.pushByte(0),r.pushBytes(s),s.length<31){r.pushByte(128),n=!1;break}i++,c+=31}d.push(r)}return e==="bytes"?d.map(r=>r.bytes):d.map(r=>t.bytesToHex(r.bytes))}function A8(f){const{data:e,kzg:b,to:a}=f,d=f.blobs??x8({data:e,to:a}),n=f.commitments??yf({blobs:d,kzg:b,to:a}),c=f.proofs??lf({blobs:d,commitments:n,kzg:b,to:a}),r=[];for(let i=0;i<d.length;i++)r.push({blob:d[i],commitment:n[i],proof:c[i]});return r}function E8(f){if(f.type)return f.type;if(typeof f.authorizationList<"u")return"eip7702";if(typeof f.blobs<"u"||typeof f.blobVersionedHashes<"u"||typeof f.maxFeePerBlobGas<"u"||typeof f.sidecars<"u")return"eip4844";if(typeof f.maxFeePerGas<"u"||typeof f.maxPriorityFeePerGas<"u")return"eip1559";if(typeof f.gasPrice<"u")return typeof f.accessList<"u"?"eip2930":"legacy";throw new Y6({transaction:f})}const wf=["blobVersionedHashes","chainId","fees","gas","nonce","type"];async function hf(f,e){const{account:b=f.account,blobs:a,chain:d,gas:n,kzg:c,nonce:r,nonceManager:i,parameters:s=wf,type:p}=e,y=b&&t.parseAccount(b),o={...e,...y?{from:y==null?void 0:y.address}:{}};let T;async function l(){return T||(T=await x(f,c0,"getBlock")({blockTag:"latest"}),T)}let v;async function m(){return v||(d?d.id:typeof e.chainId<"u"?e.chainId:(v=await x(f,of,"getChainId")({}),v))}if((s.includes("blobVersionedHashes")||s.includes("sidecars"))&&a&&c){const w=yf({blobs:a,kzg:c});if(s.includes("blobVersionedHashes")){const g=g8({commitments:w,to:"hex"});o.blobVersionedHashes=g}if(s.includes("sidecars")){const g=lf({blobs:a,commitments:w,kzg:c}),M=A8({blobs:a,commitments:w,proofs:g,to:"hex"});o.sidecars=M}}if(s.includes("chainId")&&(o.chainId=await m()),s.includes("nonce")&&typeof r>"u"&&y)if(i){const w=await m();o.nonce=await i.consume({address:y.address,chainId:w,client:f})}else o.nonce=await x(f,w8,"getTransactionCount")({address:y.address,blockTag:"pending"});if((s.includes("fees")||s.includes("type"))&&typeof p>"u")try{o.type=E8(o)}catch{const w=await l();o.type=typeof(w==null?void 0:w.baseFeePerGas)=="bigint"?"eip1559":"legacy"}if(s.includes("fees"))if(o.type!=="legacy"&&o.type!=="eip2930"){if(typeof o.maxFeePerGas>"u"||typeof o.maxPriorityFeePerGas>"u"){const w=await l(),{maxFeePerGas:g,maxPriorityFeePerGas:M}=await Y0(f,{block:w,chain:d,request:o});if(typeof e.maxPriorityFeePerGas>"u"&&e.maxFeePerGas&&e.maxFeePerGas<M)throw new a8({maxPriorityFeePerGas:M});o.maxPriorityFeePerGas=M,o.maxFeePerGas=g}}else{if(typeof e.maxFeePerGas<"u"||typeof e.maxPriorityFeePerGas<"u")throw new A0;const w=await l(),{gasPrice:g}=await Y0(f,{block:w,chain:d,request:o,type:"legacy"});o.gasPrice=g}return s.includes("gas")&&typeof n>"u"&&(o.gas=await x(f,T8,"estimateGas")({...o,account:y&&{address:y.address,type:"json-rpc"}})),x0(o),delete o.parameters,o}async function R8(f,{serializedTransaction:e}){return f.request({method:"eth_sendRawTransaction",params:[e]},{retryCount:0})}const r0=new t.LruMap(128);async function O8(f,e){var w,g,M,H;const{account:b=f.account,chain:a=f.chain,accessList:d,authorizationList:n,blobs:c,data:r,gas:i,gasPrice:s,maxFeePerBlobGas:p,maxFeePerGas:y,maxPriorityFeePerGas:o,nonce:T,value:l,...v}=e;if(typeof b>"u")throw new N6({docsPath:"/docs/actions/wallet/sendTransaction"});const m=b?t.parseAccount(b):null;try{x0(e);const R=await(async()=>{if(e.to)return e.to;if(n&&n.length>0)return await df({authorization:n[0]}).catch(()=>{throw new t.BaseError("`to` is required. Could not infer from `authorizationList`.")})})();if((m==null?void 0:m.type)==="json-rpc"||m===null){let A;a!==null&&(A=await x(f,of,"getChainId")({}),j6({currentChainId:A,chain:a}));const B=(M=(g=(w=f.chain)==null?void 0:w.formatters)==null?void 0:g.transactionRequest)==null?void 0:M.format,P=(B||pf)({...rf(v,{format:B}),accessList:d,authorizationList:n,blobs:c,chainId:A,data:r,from:m==null?void 0:m.address,gas:i,gasPrice:s,maxFeePerBlobGas:p,maxFeePerGas:y,maxPriorityFeePerGas:o,nonce:T,to:R,value:l}),k=r0.get(f.uid),F=k?"wallet_sendTransaction":"eth_sendTransaction";try{return await f.request({method:F,params:[P]},{retryCount:0})}catch(S){if(k===!1)throw S;const I=S;if(I.name==="InvalidInputRpcError"||I.name==="InvalidParamsRpcError"||I.name==="MethodNotFoundRpcError"||I.name==="MethodNotSupportedRpcError")return await f.request({method:"wallet_sendTransaction",params:[P]},{retryCount:0}).then(C=>(r0.set(f.uid,!0),C)).catch(C=>{const _=C;throw _.name==="MethodNotFoundRpcError"||_.name==="MethodNotSupportedRpcError"?(r0.set(f.uid,!1),I):_});throw I}}if((m==null?void 0:m.type)==="local"){const A=await x(f,hf,"prepareTransactionRequest")({account:m,accessList:d,authorizationList:n,blobs:c,chain:a,data:r,gas:i,gasPrice:s,maxFeePerBlobGas:p,maxFeePerGas:y,maxPriorityFeePerGas:o,nonce:T,nonceManager:m.nonceManager,parameters:[...wf,"sidecars"],value:l,...v,to:R}),B=(H=a==null?void 0:a.serializers)==null?void 0:H.transaction,N=await m.signTransaction(A,{serializer:B});return await x(f,R8,"sendRawTransaction")({serializedTransaction:N})}throw(m==null?void 0:m.type)==="smart"?new s0({metaMessages:["Consider using the `sendUserOperation` Action instead."],docsPath:"/docs/actions/bundler/sendUserOperation",type:"smart"}):new s0({docsPath:"/docs/actions/wallet/sendTransaction",type:m==null?void 0:m.type})}catch(R){throw R instanceof s0?R:J6(R,{...e,account:m,chain:e.chain||void 0})}}function C8(f,e){const{abi:b,args:a,bytecode:d,...n}=e,c=B6({abi:b,args:a,bytecode:d});return O8(f,{...n,data:c})}const t0=new t.LruMap(8192);function _8(f,{enabled:e=!0,id:b}){if(!e||!b)return f();if(t0.get(b))return t0.get(b);const a=f().finally(()=>t0.delete(b));return t0.set(b,a),a}function z8(f,e={}){return async(b,a={})=>{const{dedupe:d=!1,retryDelay:n=150,retryCount:c=3,uid:r}={...e,...a},i=d?t.keccak256(t.stringToHex(`${r}.${t.stringify(b)}`)):void 0;return _8(()=>t.withRetry(async()=>{try{return await f(b)}catch(s){const p=s;switch(p.code){case t.ParseRpcError.code:throw new t.ParseRpcError(p);case t.InvalidRequestRpcError.code:throw new t.InvalidRequestRpcError(p);case t.MethodNotFoundRpcError.code:throw new t.MethodNotFoundRpcError(p,{method:b.method});case t.InvalidParamsRpcError.code:throw new t.InvalidParamsRpcError(p);case t.InternalRpcError.code:throw new t.InternalRpcError(p);case t.InvalidInputRpcError.code:throw new t.InvalidInputRpcError(p);case t.ResourceNotFoundRpcError.code:throw new t.ResourceNotFoundRpcError(p);case t.ResourceUnavailableRpcError.code:throw new t.ResourceUnavailableRpcError(p);case t.TransactionRejectedRpcError.code:throw new t.TransactionRejectedRpcError(p);case t.MethodNotSupportedRpcError.code:throw new t.MethodNotSupportedRpcError(p,{method:b.method});case t.LimitExceededRpcError.code:throw new t.LimitExceededRpcError(p);case t.JsonRpcVersionUnsupportedError.code:throw new t.JsonRpcVersionUnsupportedError(p);case t.UserRejectedRequestError.code:throw new t.UserRejectedRequestError(p);case t.UnauthorizedProviderError.code:throw new t.UnauthorizedProviderError(p);case t.UnsupportedProviderMethodError.code:throw new t.UnsupportedProviderMethodError(p);case t.ProviderDisconnectedError.code:throw new t.ProviderDisconnectedError(p);case t.ChainDisconnectedError.code:throw new t.ChainDisconnectedError(p);case t.SwitchChainError.code:throw new t.SwitchChainError(p);case 5e3:throw new t.UserRejectedRequestError(p);default:throw s instanceof t.BaseError?s:new t.UnknownRpcError(p)}}},{delay:({count:s,error:p})=>{var y;if(p&&p instanceof t.HttpRequestError){const o=(y=p==null?void 0:p.headers)==null?void 0:y.get("Retry-After");if(o!=null&&o.match(/\d/))return Number.parseInt(o)*1e3}return~~(1<<s)*n},retryCount:c,shouldRetry:({error:s})=>B8(s)}),{enabled:d,id:i})}}function B8(f){return"code"in f&&typeof f.code=="number"?f.code===-1||f.code===t.LimitExceededRpcError.code||f.code===t.InternalRpcError.code:f instanceof t.HttpRequestError&&f.status?f.status===403||f.status===408||f.status===413||f.status===429||f.status===500||f.status===502||f.status===503||f.status===504:!0}function N8(f,e,b){const a=f[e.name];if(typeof a=="function")return a;const d=f[b];return typeof d=="function"?d:n=>e(f,n)}function P8({key:f,name:e,request:b,retryCount:a=3,retryDelay:d=150,timeout:n,type:c},r){const i=t.uid();return{config:{key:f,name:e,request:b,retryCount:a,retryDelay:d,timeout:n,type:c},request:z8(b,{retryCount:a,retryDelay:d,uid:i}),value:r}}function $8(f,e={}){const{key:b="custom",name:a="Custom Provider",retryDelay:d}=e;return({retryCount:n})=>P8({key:b,name:a,request:f.request.bind(f),retryCount:e.retryCount??n,retryDelay:d,type:"custom"})}async function L8(f,e={}){let b;if(e.connector){const{connector:s}=e;if(f.state.status==="reconnecting"&&!s.getAccounts&&!s.getChainId)throw new t.ConnectorUnavailableReconnectingError({connector:s});const[p,y]=await Promise.all([s.getAccounts(),s.getChainId()]);b={accounts:p,chainId:y,connector:s}}else b=f.state.connections.get(f.state.current);if(!b)throw new t.ConnectorNotConnectedError;const a=e.chainId??b.chainId,d=await b.connector.getChainId();if(d!==b.chainId)throw new t.ConnectorChainMismatchError({connectionChainId:b.chainId,connectorChainId:d});const n=b.connector;if(n.getClient)return n.getClient({chainId:a});const c=t.parseAccount(e.account??b.accounts[0]);if(c.address=t.getAddress(c.address),e.account&&!b.accounts.some(s=>s.toLowerCase()===c.address.toLowerCase()))throw new t.ConnectorAccountNotFoundError({address:c.address,connector:n});const r=f.chains.find(s=>s.id===a),i=await b.connector.getProvider({chainId:a});return t.createClient({account:c,chain:r,name:"Connector Client",transport:s=>$8(i)({...s,retryCount:0})})}async function h(f,e){const{account:b,chainId:a,connector:d,...n}=e;let c;return typeof b=="object"&&b.type==="local"?c=f.getClient({chainId:a}):c=await L8(f,{account:b,chainId:a,connector:d}),await N8(c,C8,"deployContract")({...n,...b?{account:b}:{},chain:a?{id:a}:null})}const H8=async function(e,b){var L,G,V,U,q,j,Z,W,K,Y,Q,J,X,f0,e0;const a=b.privateKey,d=b.mnemonic,n=b.chain;if(!a&&!d)throw new Error("Must provide `--privateKey` or `--mnemonic` to deploy contracts");if(!n||!t.Chains[n])throw new Error(`Must provide valid \`--chain\` to specify target deployment chain, valid chains are ${Object.keys(t.Chains)}`);const[c,r]=t.getDeployableOptions({chain:n,privateKey:a,mnemonic:d}),{config:i,account:s}=c,p=r.id,y=await new u.BoostRegistry({address:null,...c}).deploy(),O=class O extends u.BoostRegistry{};O.addresses={[p]:y.assertValidAddress()};let o=O;const T=new o({...c,address:y.assertValidAddress()}),l=await new u.BoostCore({...c}).deploy({registryAddress:T.assertValidAddress(),protocolFeeReceiver:s.address,owner:s.address,...c}),v=await u.getDeployedContractAddress(i,h(i,{abi:O0.abi,bytecode:O0.bytecode,account:s})),m=await u.getDeployedContractAddress(i,h(i,{abi:C0.abi,bytecode:C0.bytecode,account:s})),w=await u.getDeployedContractAddress(i,h(i,{abi:B0.abi,bytecode:B0.bytecode,account:s})),g=await u.getDeployedContractAddress(i,h(i,{abi:N0.abi,bytecode:N0.bytecode,account:s})),M=await u.getDeployedContractAddress(i,h(i,{abi:z0.abi,bytecode:z0.bytecode,account:s})),H=await u.getDeployedContractAddress(i,h(i,{abi:P0.abi,bytecode:P0.bytecode,account:s})),R=await u.getDeployedContractAddress(i,h(i,{abi:$0.abi,bytecode:$0.bytecode,account:s})),A=await u.getDeployedContractAddress(i,h(i,{abi:L0.abi,bytecode:L0.bytecode,account:s})),B=await u.getDeployedContractAddress(i,h(i,{abi:H0.abi,bytecode:H0.bytecode,account:s})),N=await u.getDeployedContractAddress(i,h(i,{abi:F0.abi,bytecode:F0.bytecode,account:s})),P=await u.getDeployedContractAddress(i,h(i,{abi:k0.abi,bytecode:k0.bytecode,account:s})),k=await u.getDeployedContractAddress(i,h(i,{abi:G0.abi,bytecode:G0.bytecode,account:s})),F=await u.getDeployedContractAddress(i,h(i,{abi:_0.abi,bytecode:_0.bytecode,account:s})),S=await u.getDeployedContractAddress(i,h(i,{abi:V0.abi,bytecode:V0.bytecode,account:s})),I=await u.getDeployedContractAddress(i,h(i,{abi:D0.abi,bytecode:D0.bytecode,account:s})),C=await u.getDeployedContractAddress(i,h(i,{abi:S0.abi,bytecode:S0.bytecode,account:s})),_=await u.getDeployedContractAddress(i,h(i,{abi:j0.abi,bytecode:j0.bytecode,account:s})),D=await u.getDeployedContractAddress(i,h(i,{abi:U0.abi,bytecode:U0.bytecode,account:s})),$=await u.getDeployedContractAddress(i,h(i,{abi:q0.abi,bytecode:q0.bytecode,args:[s.address,1000000000000000n],account:s})),z={EventAction:(L=class extends u.EventAction{},L.bases={[p]:F},L),SimpleAllowList:(G=class extends u.SimpleAllowList{},G.bases={[p]:w},G),SimpleDenyList:(V=class extends u.SimpleDenyList{},V.bases={[p]:g},V),OffchainAccessList:(U=class extends u.OffchainAccessList{},U.bases={[p]:M},U),ManagedBudget:(q=class extends u.ManagedBudget{},q.bases={[p]:H},q),ManagedBudgetWithFees:(j=class extends u.ManagedBudgetWithFees{},j.bases={[p]:R},j),AllowListIncentive:(Z=class extends u.AllowListIncentive{},Z.bases={[p]:B},Z),CGDAIncentive:(W=class extends u.CGDAIncentive{},W.bases={[p]:N},W),ERC20Incentive:(K=class extends u.ERC20Incentive{},K.bases={[p]:P},K),ERC20VariableIncentive:(Y=class extends u.ERC20VariableIncentive{},Y.bases={[p]:I},Y),ERC20VariableCriteriaIncentiveV2:(Q=class extends u.ERC20VariableCriteriaIncentiveV2{},Q.bases={[p]:C},Q),PointsIncentive:(J=class extends u.PointsIncentive{},J.bases={[p]:S},J),SignerValidator:(X=class extends u.SignerValidator{},X.bases={[p]:_},X),LimitedSignerValidator:(f0=class extends u.LimitedSignerValidator{},f0.bases={[p]:D},f0),PayableLimitedSignerValidator:(e0=class extends u.PayableLimitedSignerValidator{},e0.bases={[p]:$},e0)};for(const[vf,R0]of Object.entries(z))await T.register(R0.registryType,vf,R0.bases[p]);return{BOOST_CORE_ADDRESS:l.assertValidAddress(),BOOST_REGISTRY_ADDRESS:T.assertValidAddress(),CONTRACT_ACTION_BASE:v,EVENT_ACTION_BASE:F,ERC721_MINT_ACTION_BASE:m,SIMPLE_ALLOWLIST_BASE:w,SIMPLE_DENYLIST_BASE:g,OFFCHAIN_ACCESS_LIST_BASE:M,MANAGED_BUDGET_BASE:H,VESTING_BUDGET_BASE:A,ALLOWLIST_INCENTIVE_BASE:B,CGDA_INCENTIVE_BASE:N,ERC20_INCENTIVE_BASE:P,ERC20_VARIABLE_INCENTIVE_BASE:I,ERC20_VARIABLE_CRITERIA_INCENTIVE_V2_BASE:C,ERC1155_INCENTIVE_BASE:k,POINTS_INCENTIVE_BASE:S,SIGNER_VALIDATOR_BASE:_,LIMITED_SIGNER_VALIDATOR_BASE:D,PAYABLE_LIMITED_SIGNER_VALIDATOR_BASE:$}};exports.deploy=H8;